From 08a2de5751364a4b16f57eb4787566b0e2f10e43 Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Thu, 20 Jan 2022 18:16:04 +0330 Subject: [PATCH] bug fixes | code cleaning --- lib/pages/home/home.dart | 7 +-- lib/pages/home/news/news.dart | 2 +- lib/pages/home/news/widgets/news_item.dart | 17 +++---- lib/pages/splash/splash.dart | 59 +++++++++++++--------- 4 files changed, 46 insertions(+), 39 deletions(-) diff --git a/lib/pages/home/home.dart b/lib/pages/home/home.dart index 94fb048..880e84a 100644 --- a/lib/pages/home/home.dart +++ b/lib/pages/home/home.dart @@ -1,8 +1,8 @@ import 'package:didvan/config/design_config.dart'; import 'package:didvan/pages/home/home_state.dart'; import 'package:didvan/pages/home/news/news.dart'; -import 'package:didvan/pages/home/profile/profile.dart'; import 'package:didvan/pages/home/radar/radar.dart'; +import 'package:didvan/pages/home/settings/settings.dart'; import 'package:didvan/pages/home/statistics/statistics.dart'; import 'package:didvan/pages/home/studio/studio.dart'; import 'package:didvan/pages/home/widgets/bnb.dart'; @@ -22,7 +22,7 @@ class _HomeState extends State with SingleTickerProviderStateMixin { @override void initState() { DesignConfig.updateSystemUiOverlayStyle(); - _tabController = TabController(length: 5, vsync: this); + _tabController = TabController(length: 5, vsync: this, initialIndex: 2); _tabController.addListener(() { context.read().currentPageIndex = _tabController.index; }); @@ -40,7 +40,7 @@ class _HomeState extends State with SingleTickerProviderStateMixin { Statictics(), Radar(), Studio(), - Profile(), + Settings(), ], ), bottomNavigationBar: Consumer( @@ -48,6 +48,7 @@ class _HomeState extends State with SingleTickerProviderStateMixin { currentTabIndex: state.currentPageIndex, onTabChanged: (index) { state.currentPageIndex = index; + FocusScope.of(context).unfocus(); _tabController.animateTo(index); }, ), diff --git a/lib/pages/home/news/news.dart b/lib/pages/home/news/news.dart index 32f5375..0e0181d 100644 --- a/lib/pages/home/news/news.dart +++ b/lib/pages/home/news/news.dart @@ -25,7 +25,6 @@ class News extends StatefulWidget { class _NewsState extends State { Timer? _timer; - @override void initState() { Future.delayed(Duration.zero, () { @@ -48,6 +47,7 @@ class _NewsState extends State { title: 'اخبار', onChanged: _onChanged, onFilterButtonPressed: _showFilterBottomSheet, + isFiltered: state.isFiltering, ), ), ), diff --git a/lib/pages/home/news/widgets/news_item.dart b/lib/pages/home/news/widgets/news_item.dart index 87b8fd6..7b479bf 100644 --- a/lib/pages/home/news/widgets/news_item.dart +++ b/lib/pages/home/news/widgets/news_item.dart @@ -1,12 +1,11 @@ -import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/news_overview.dart'; import 'package:didvan/pages/home/news/news_state.dart'; import 'package:didvan/routes/routes.dart'; +import 'package:didvan/widgets/bookmark_button.dart'; import 'package:didvan/widgets/didvan/card.dart'; import 'package:didvan/widgets/didvan/divider.dart'; -import 'package:didvan/widgets/didvan/icon_button.dart'; import 'package:didvan/widgets/didvan/text.dart'; -import 'package:didvan/widgets/skeletun_image.dart'; +import 'package:didvan/widgets/skeleton_image.dart'; import 'package:flutter/material.dart'; import 'package:persian_number_utility/persian_number_utility.dart'; import 'package:provider/provider.dart'; @@ -20,7 +19,7 @@ class NewsItem extends StatelessWidget { final state = context.read(); return DidvanCard( onTap: () => Navigator.of(context).pushNamed( - Routes.radarDetails, + Routes.newsDetails, arguments: { 'state': state, 'id': news.id, @@ -61,12 +60,10 @@ class NewsItem extends StatelessWidget { '${news.reference} | ${DateTime.parse(news.createdAt).toPersianDateStr()}', style: Theme.of(context).textTheme.overline, ), - DidvanIconButton( - icon: news.marked - ? DidvanIcons.bookmark_solid - : DidvanIcons.bookmark_regular, - gestureSize: 32, - onPressed: () => state.markNews(news.id), + BookmarkButton( + value: news.marked, + onMark: () => state.markNews(news.id), + onUnmark: () => state.unMarkNews(news.id), ), ], ), diff --git a/lib/pages/splash/splash.dart b/lib/pages/splash/splash.dart index 2e0dddb..3ea027d 100644 --- a/lib/pages/splash/splash.dart +++ b/lib/pages/splash/splash.dart @@ -8,11 +8,14 @@ import 'package:didvan/providers/user_provider.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/storage/storage.dart'; import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/widgets/logos/didvan_horizontal_logo.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; +import 'package:universal_html/html.dart' as html; class Splash extends StatefulWidget { const Splash({Key? key}) : super(key: key); @@ -30,31 +33,6 @@ class _SplashState extends State { super.initState(); } - Future _initialize() async { - ActionSheetUtils.context = navigatorKey.currentContext!; - await AppInitializer.setupServices(); - final ThemeMode themeMode = await AppInitializer.initilizeSettings(); - context.read().themeMode = themeMode; - await Future.delayed( - const Duration(milliseconds: 200), - () => setState(() { - _isGettingThemeData = false; - }), - ); - final userProvider = context.read(); - final String? token = await userProvider.setAndGetToken(); - if (token != null) { - log(token); - RequestService.token = token; - await userProvider.getUserInfo(); - await context.read().getData(); - } - Navigator.of(context).pushReplacementNamed( - token == null ? Routes.authenticaion : Routes.home, - arguments: token == null ? false : null, - ); - } - @override Widget build(BuildContext context) { if (_isGettingThemeData) { @@ -78,4 +56,35 @@ class _SplashState extends State { ), ); } + + Future _initialize() async { + ActionSheetUtils.context = navigatorKey.currentContext!; + if (kIsWeb) { + html.window.onBeforeUnload.listen((event) { + StorageService.webStorage + .removeWhere((key, value) => key == 'image-cache'); + }); + } + await AppInitializer.setupServices(); + final ThemeMode themeMode = await AppInitializer.initilizeSettings(); + context.read().themeMode = themeMode; + await Future.delayed( + const Duration(milliseconds: 200), + () => setState(() { + _isGettingThemeData = false; + }), + ); + final userProvider = context.read(); + final String? token = await userProvider.setAndGetToken(); + if (token != null) { + log(token); + RequestService.token = token; + await userProvider.getUserInfo(); + await context.read().getData(); + } + Navigator.of(context).pushReplacementNamed( + token == null ? Routes.authenticaion : Routes.home, + arguments: token == null ? false : null, + ); + } }