import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:go_router/go_router.dart'; import 'package:hoshan/core/gen/assets.gen.dart'; import 'package:hoshan/core/routes/route_generator.dart'; import 'package:hoshan/ui/screens/main/assistant/bloc/personal_assistants_bloc.dart'; import 'package:hoshan/ui/screens/main/assistant/global_assistants_screen.dart'; import 'package:hoshan/ui/screens/main/assistant/personal_assistants_screen.dart'; import 'package:hoshan/ui/theme/colors.dart'; import 'package:hoshan/ui/widgets/components/button/tab_btn.dart'; class AssistantScreen extends StatefulWidget { const AssistantScreen({super.key}); @override State createState() => _AssistantScreenState(); } class _AssistantScreenState extends State with AutomaticKeepAliveClientMixin { @override bool get wantKeepAlive => true; int selectedIndex = 0; @override Widget build(BuildContext context) { super.build(context); return Scaffold( floatingActionButton: Column( crossAxisAlignment: CrossAxisAlignment.end, mainAxisSize: MainAxisSize.min, children: [ if ((selectedIndex == 1 && context.watch().state is PersonalAssistantsEmpty)) IgnorePointer( child: Container( padding: const EdgeInsets.only(right: 10, bottom: 12), child: Assets.icon.gif.flash.image(fit: BoxFit.fill, scale: 1.5), ), ), FloatingActionButton( heroTag: 'create-assistants-fb', onPressed: () { context.go(Routes.createAssistant); }, backgroundColor: AppColors.primaryColor.defaultShade, shape: const CircleBorder(), child: Assets.icon.bold.createAssistant .svg(color: Colors.white, width: 20, height: 20), ) .animate( autoPlay: true, onPlay: (controller) => controller.repeat(reverse: true), ) .scale( begin: const Offset(1, 1), end: const Offset(1.2, 1.2), duration: 600.ms, curve: Curves.easeInOut, delay: 1.seconds), ], ), body: Column( children: [ tabBars(context), Expanded( child: IndexedStack( index: selectedIndex, children: const [ GlobalAssistantsScreen(), PersonalAssistantsScreen() ], ), ) ], ), ); } Widget tabBars(BuildContext context) { return Directionality( textDirection: TextDirection.rtl, child: Column( children: [ // AiBanner(), Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), margin: const EdgeInsets.symmetric(vertical: 8), decoration: BoxDecoration(color: Theme.of(context).scaffoldBackgroundColor), child: Column( children: [ Row( children: [ Expanded( child: InkWell( borderRadius: BorderRadius.circular(10), onTap: () => setState(() => selectedIndex = 0), child: Padding( padding: const EdgeInsets.symmetric( vertical: 0.0, horizontal: 0.0), child: TabBtn( title: 'دستیارهای هوشان', icon: Assets.icon.bold.globalAssistant, active: selectedIndex == 0, click: () => setState(() => selectedIndex = 0), ), ), ), ), const SizedBox(width: 8), Expanded( child: InkWell( borderRadius: BorderRadius.circular(10), onTap: () => setState(() => selectedIndex = 1), child: Padding( padding: const EdgeInsets.symmetric( vertical: 0.0, horizontal: 0.0), child: TabBtn( title: 'دستیارهای من', icon: Assets.icon.bold.myAssistant, active: selectedIndex == 1, click: () => setState(() => selectedIndex = 1), ), ), ), ), ], ), Container( height: 2, width: double.infinity, color: AppColors.gray.defaultShade, ), ], ), ), ], ), ); } }