import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart'; import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-logs-page.dart'; import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-request-page.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class RRTMainScreen extends StatefulWidget { @override State createState() => RRTMainScreenState(); } class RRTMainScreenState extends State with SingleTickerProviderStateMixin { int currentIndex = 0; TabController tabController; PageController pageController = PageController(initialPage: 0, keepPage: true); RRTViewModel viewModel; bool loadingData; List imagesInfo = List(); @override void initState() { super.initState(); imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/RRT/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/RRT/ar/0.png')); tabController = TabController(length: 2, vsync: this); } TranslationBase localize; @override Widget build(BuildContext context) { localize = TranslationBase.of(context); return AppScaffold( appBarTitle: localize.rapidResponseTeam, isShowAppBar: true, description: TranslationBase.of(context).rrtDDetails, imagesInfo: imagesInfo, body: BaseView( onModelReady: (vm) async { viewModel = vm; loadingData = true; await vm.loadRequiredData().then((value) {}).whenComplete(() => setState(() => loadingData = false)); }, builder: (ctx, vm, widget) => content(), )); } Widget content() { if (loadingData == true) { return Center(child: CircularProgressIndicator()); // else if(viewModel.state == ViewState.Error) } else if (viewModel.rrtServiceData != null && viewModel.rrtServiceData.servicePrice != null) { return Column( children: [tabBar(), Expanded(child: contentPager())], ); } else { return Container( alignment: Alignment.center, child: Text( localize.somethingWentWrongTryLater, style: TextStyle(color: Colors.red), maxLines: 5, ), ); } } Widget tabBar() => Container( margin: EdgeInsets.all(15), clipBehavior: Clip.hardEdge, decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10)), child: TabBar(onTap: onPageChanged, indicatorWeight: 3, indicatorColor: Color(0xFFc5272d), isScrollable: false, controller: tabController, indicatorSize: TabBarIndicatorSize.label, tabs: [ Tab( child: Text( localize.rapidResponseTeam, style: TextStyle(color: Theme.of(context).appBarTheme.color), ), ), Tab( child: Text( localize.orderLog, style: TextStyle(color: Theme.of(context).appBarTheme.color), ), ), ]), ); Widget contentPager() => PageView( onPageChanged: onPageChanged, controller: pageController, children: [ RRTRequestPage(servicePrice: viewModel.rrtServiceData.servicePrice, pendingOrders: viewModel.rrtServiceData.pendingOrders), RRTLogPage(orders: viewModel.rrtServiceData.completedOrders), ], ); void onPageChanged(int index) { pageController.animateToPage(index, duration: Duration(milliseconds: 200), curve: Curves.easeInOut); tabController.animateTo(index); } }