import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/view/action_sheet_data.dart'; import 'package:didvan/models/widget_response.dart'; import 'package:didvan/providers/theme.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/services/app_initalizer.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/views/home/bookmarks/bookmarks.dart'; import 'package:didvan/views/home/categories/categories_page.dart'; import 'package:didvan/views/home/main/main_page.dart'; import 'package:didvan/views/home/home_state.dart'; import 'package:didvan/views/home/new_statistic/new_statistic.dart'; import 'package:didvan/views/home/search/search.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/ink_wrapper.dart'; import 'package:didvan/views/widgets/logo_app_bar.dart'; import 'package:didvan/views/widgets/didvan/bnb.dart'; import 'package:flutter/material.dart'; import 'package:home_widget/home_widget.dart'; import 'package:persian_number_utility/persian_number_utility.dart'; import 'package:provider/provider.dart'; class Home extends StatefulWidget { const Home({Key? key}) : super(key: key); @override State createState() => _HomeState(); } class _HomeState extends State with SingleTickerProviderStateMixin, WidgetsBindingObserver { late final TabController _tabController; @override void initState() { final state = context.read(); DesignConfig.updateSystemUiOverlayStyle(); _tabController = TabController(length: 4, vsync: this, initialIndex: 0); state.tabController = _tabController; _tabController.addListener(() { state.currentPageIndex = _tabController.index; }); Future.delayed(Duration.zero, () { AppInitializer.handleCLick(state, _tabController); }); state.refresh(); context.read().addListener(() { state.refresh(); }); super.initState(); } Future _fetchWidget() async { final service = RequestService( RequestHelper.widgetNews(), ); await service.httpGet(); List responseList = []; if (service.isSuccess) { final favourites = service.data('content'); HomeWidget.saveWidgetData("token", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwicm9sZUlkIjo0LCJhcHBJZCI6MCwiaWF0IjoxNzEzOTM1NzkwfQ.i-SO9tLy0M9j-_C2Wh8tdp01vtYGlDZIBFPygglHQF0"); for (var i = 0; i < favourites.length; i++) { HomeWidget.saveWidgetData( "id${i + 1}", WidgetResponse.fromJson(favourites[i]).id.toString()); HomeWidget.saveWidgetData("title${i + 1}", WidgetResponse.fromJson(favourites[i]).title.toString()); HomeWidget.saveWidgetData( "createdAt${i + 1}", DateTime.parse( WidgetResponse.fromJson(favourites[i]).createdAt.toString()) .toPersianDateStr()); HomeWidget.saveWidgetData("type${i + 1}", WidgetResponse.fromJson(favourites[i]).type.toString()); HomeWidget.saveWidgetData("link${i + 1}", WidgetResponse.fromJson(favourites[i]).link.toString()); HomeWidget.saveWidgetData("category${i + 1}", WidgetResponse.fromJson(favourites[i]).category.toString()); HomeWidget.saveWidgetData("image${i + 1}", WidgetResponse.fromJson(favourites[i]).image.toString()); } HomeWidget.updateWidget( androidName: "FavWidget", ); } } @override Widget build(BuildContext context) { _fetchWidget(); return Scaffold( appBar: const LogoAppBar(), body: Consumer( builder: (context, state, child) => AnimatedCrossFade( duration: DesignConfig.lowAnimationDuration, crossFadeState: state.filtering ? CrossFadeState.showSecond : CrossFadeState.showFirst, firstChild: SizedBox( height: MediaQuery.of(context).size.height, width: MediaQuery.of(context).size.width, child: TabBarView( physics: const NeverScrollableScrollPhysics(), controller: _tabController, children: const [ MainPage(), NewStatistic(), //Statistic(), CategoriesPage(), Bookmarks(), ], ), ), secondChild: const SearchPage(), ), ), bottomNavigationBar: Consumer( builder: (context, state, child) => DidvanBNB( currentTabIndex: state.currentPageIndex, onTabChanged: (index) { state.currentPageIndex = index; FocusScope.of(context).unfocus(); state.resetFilters(false); _tabController.animateTo(index); }, ), ), ); } }