From 792be0af9651afb33dbee000990571f0b3795ce8 Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Sat, 1 Jan 2022 15:31:28 +0330 Subject: [PATCH] theme chaging bug fixed | code cleaning --- lib/config/design_config.dart | 23 ++++++++++--------- lib/main.dart | 2 ++ lib/pages/home/chat/chat.dart | 3 --- lib/pages/home/home.dart | 5 +--- lib/pages/home/profile/settings/settings.dart | 3 +-- lib/pages/splash/splash.dart | 5 ++-- lib/services/app_initalizer.dart | 11 --------- 7 files changed, 18 insertions(+), 34 deletions(-) diff --git a/lib/config/design_config.dart b/lib/config/design_config.dart index 3c74136..aa6008c 100644 --- a/lib/config/design_config.dart +++ b/lib/config/design_config.dart @@ -1,9 +1,10 @@ import 'package:didvan/config/theme_data.dart'; +import 'package:didvan/main.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class DesignConfig { - static late BuildContext context; + static BuildContext get context => navigatorKey.currentContext!; static const BorderRadius lowBorderRadius = BorderRadius.all( Radius.circular(8), @@ -35,20 +36,20 @@ class DesignConfig { static SystemUiOverlayStyle get systemUiOverlayStyle { return SystemUiOverlayStyle( - statusBarIconBrightness: Theme.of(context).brightness == Brightness.dark - ? Brightness.light - : Brightness.dark, + statusBarIconBrightness: + brightness == Brightness.dark ? Brightness.light : Brightness.dark, statusBarColor: Colors.transparent, - // systemNavigationBarColor: Theme.of(context).colorScheme.surface, - // systemNavigationBarDividerColor: Colors.transparent, - // systemNavigationBarIconBrightness: - // Theme.of(context).colorScheme.brightness == Brightness.dark - // ? Brightness.light - // : Brightness.dark, + systemNavigationBarColor: Theme.of(context).colorScheme.surface, + systemNavigationBarDividerColor: Colors.transparent, + systemNavigationBarIconBrightness: + brightness == Brightness.dark ? Brightness.light : Brightness.dark, ); } static void updateSystemUiOverlayStyle() { - SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); + Future.delayed( + DesignConfig.lowAnimationDuration, + () => SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle), + ); } } diff --git a/lib/main.dart b/lib/main.dart index ba606ac..07d754d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ void main() { } final GlobalKey navigatorKey = GlobalKey(); +final GlobalKey materialKey = GlobalKey(); class Didvan extends StatelessWidget { const Didvan({Key? key}) : super(key: key); @@ -27,6 +28,7 @@ class Didvan extends StatelessWidget { ], child: Consumer( builder: (context, themeProvider, child) => MaterialApp( + key: materialKey, navigatorKey: navigatorKey, debugShowCheckedModeBanner: false, title: 'Didvan', diff --git a/lib/pages/home/chat/chat.dart b/lib/pages/home/chat/chat.dart index 59cfbe3..45e78f4 100644 --- a/lib/pages/home/chat/chat.dart +++ b/lib/pages/home/chat/chat.dart @@ -1,7 +1,4 @@ -import 'dart:developer'; - import 'package:just_audio/just_audio.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:record/record.dart'; import 'package:universal_html/js.dart' as js; import 'package:didvan/config/theme_data.dart'; diff --git a/lib/pages/home/home.dart b/lib/pages/home/home.dart index c9ce74d..cfb7f07 100644 --- a/lib/pages/home/home.dart +++ b/lib/pages/home/home.dart @@ -22,10 +22,7 @@ class _HomeState extends State with SingleTickerProviderStateMixin { @override void initState() { - Future.delayed(const Duration(milliseconds: 400), () { - DesignConfig.context = context; - DesignConfig.updateSystemUiOverlayStyle(); - }); + DesignConfig.updateSystemUiOverlayStyle(); _tabController = TabController(length: 5, vsync: this); _tabController.addListener(() { context.read().currentPageIndex = _tabController.index; diff --git a/lib/pages/home/profile/settings/settings.dart b/lib/pages/home/profile/settings/settings.dart index 3025044..3c79c46 100644 --- a/lib/pages/home/profile/settings/settings.dart +++ b/lib/pages/home/profile/settings/settings.dart @@ -171,11 +171,10 @@ class Settings extends StatelessWidget { } else { if (isDarkTheme) { context.read().themeMode = ThemeMode.dark; - DesignConfig.updateSystemUiOverlayStyle(); } else { context.read().themeMode = ThemeMode.light; - DesignConfig.updateSystemUiOverlayStyle(); } + DesignConfig.updateSystemUiOverlayStyle(); } }, child: Column( diff --git a/lib/pages/splash/splash.dart b/lib/pages/splash/splash.dart index 2f97304..b2c9677 100644 --- a/lib/pages/splash/splash.dart +++ b/lib/pages/splash/splash.dart @@ -42,7 +42,6 @@ class _SplashState extends State { @override Widget build(BuildContext context) { - DesignConfig.context = context; if (_isGettingThemeData) { return Container( color: Colors.black, @@ -52,8 +51,8 @@ class _SplashState extends State { } return AnnotatedRegion( value: DesignConfig.systemUiOverlayStyle.copyWith( - // systemNavigationBarColor: Theme.of(context).colorScheme.focused, - ), + systemNavigationBarColor: Theme.of(context).colorScheme.background, + ), child: Scaffold( body: Container( alignment: Alignment.center, diff --git a/lib/services/app_initalizer.dart b/lib/services/app_initalizer.dart index 0d628fb..5dfe216 100644 --- a/lib/services/app_initalizer.dart +++ b/lib/services/app_initalizer.dart @@ -1,22 +1,11 @@ import 'package:didvan/models/settings_data.dart'; import 'package:didvan/services/storage/storage.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:hive_flutter/hive_flutter.dart'; -import 'package:permission_handler/permission_handler.dart'; class AppInitializer { static Future setupServices() async { - // late final Directory appDir; - // late final Directory appTempsDir; - // if (!kIsWeb) { await Hive.initFlutter(); - // appDir = await getApplicationDocumentsDirectory(); - // appTempsDir = await getApplicationDocumentsDirectory(); - // } - // Hive.init(appDir.path); - // StorageService.appDocsDir = appDir.path; - // StorageService.appTempsDir = appTempsDir.path; } static Future initilizeSettings() async {