diff --git a/lib/main.dart b/lib/main.dart index 8575acd..f46b396 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -30,17 +30,6 @@ class _HomeState extends State { int active = 0; // String login; - @override - void initState() { - super.initState(); - nextTick(() { - // FIXME: - Provider.of(context).init(); - Provider.of(context).init(); - Provider.of(context).init(); - }); - } - Widget _buildNotificationIcon(BuildContext context, bool isActive) { final iconData = isActive ? Icons.notifications : Icons.notifications_none; int count = Provider.of(context).count; @@ -201,22 +190,8 @@ class _HomeState extends State { } } -class App extends StatelessWidget { - @override - Widget build(BuildContext context) { - return MultiProvider( - providers: [ - ChangeNotifierProvider(builder: (context) => NotificationModel()), - ChangeNotifierProvider(builder: (context) => ThemeModel()), - ChangeNotifierProvider(builder: (context) => AuthModel()), - ChangeNotifierProvider(builder: (context) => CodeModel()), - ], - child: Home(), - ); - } -} - void main() async { + WidgetsFlutterBinding.ensureInitialized(); // Platform messages may fail, so we use a try/catch PlatformException. // try { @@ -236,5 +211,23 @@ void main() async { // TODO: Later, should check to enable debug log in debug build only Fimber.plantTree(DebugTree()); - runApp(App()); + final notificationModel = NotificationModel(); + final themeModel = ThemeModel(); + final authModel = AuthModel(); + final codeModel = CodeModel(); + await Future.wait([ + themeModel.init(), + authModel.init(), + codeModel.init(), + ]); + + runApp(MultiProvider( + providers: [ + ChangeNotifierProvider(builder: (context) => notificationModel), + ChangeNotifierProvider(builder: (context) => themeModel), + ChangeNotifierProvider(builder: (context) => authModel), + ChangeNotifierProvider(builder: (context) => codeModel), + ], + child: Home(), + )); } diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 757240b..931c62e 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -138,7 +138,7 @@ class AuthModel with ChangeNotifier { return info; } - void init() async { + Future init() async { // Listen scheme _sub = getUriLinksStream().listen(_onSchemeDetected, onError: (err) { Fimber.e('getUriLinksStream failed', ex: err); diff --git a/lib/models/code.dart b/lib/models/code.dart index 4c76cff..a1869dd 100644 --- a/lib/models/code.dart +++ b/lib/models/code.dart @@ -30,7 +30,7 @@ class CodeModel with ChangeNotifier { String get fontFamilyUsed => _fontFamily == 'System' ? CommonStyle.monospace : _fontFamily; - init() async { + Future init() async { var prefs = await SharedPreferences.getInstance(); var vh = prefs.getString(_kTheme); var vs = prefs.getInt(_kFontSize); diff --git a/lib/models/theme.dart b/lib/models/theme.dart index 6c34bb5..1ae78ef 100644 --- a/lib/models/theme.dart +++ b/lib/models/theme.dart @@ -70,7 +70,7 @@ class ThemeModel with ChangeNotifier { int get theme => _theme; bool get ready => _theme != null; - init() async { + Future init() async { var prefs = await SharedPreferences.getInstance(); int v = prefs.getInt(storageKey);