Add base skeleton
This commit is contained in:
@ -3,7 +3,9 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:moneymgr_mobile/providers/settings.dart';
|
||||
import 'package:moneymgr_mobile/services/router/router.dart';
|
||||
import 'package:moneymgr_mobile/services/storage/prefs.dart';
|
||||
import 'package:moneymgr_mobile/services/storage/secure_storage.dart';
|
||||
import 'package:moneymgr_mobile/utils/provider_observer.dart';
|
||||
import 'package:moneymgr_mobile/utils/theme_utils.dart';
|
||||
|
||||
@ -16,10 +18,12 @@ Future<void> main() async {
|
||||
// app is inserted to the widget tree.
|
||||
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
|
||||
|
||||
runApp(ProviderScope(
|
||||
observers: [AppProviderObserver()],
|
||||
child: const MoneyMgrApp(),
|
||||
));
|
||||
runApp(
|
||||
ProviderScope(
|
||||
observers: [AppProviderObserver()],
|
||||
child: const MoneyMgrApp(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
class MoneyMgrApp extends StatelessWidget {
|
||||
@ -27,21 +31,18 @@ class MoneyMgrApp extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const _EagerInitialization(
|
||||
child: _MainApp(),
|
||||
);
|
||||
return const _EagerInitialization(child: _MainApp());
|
||||
}
|
||||
}
|
||||
|
||||
class _EagerInitialization extends ConsumerWidget {
|
||||
const _EagerInitialization({required this.child});
|
||||
|
||||
final Widget child;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final values = [
|
||||
ref.watch(prefsProvider),
|
||||
];
|
||||
final values = [ref.watch(prefsProvider), ref.watch(secureStorageProvider)];
|
||||
|
||||
if (values.every((value) => value.hasValue)) {
|
||||
return child;
|
||||
@ -58,7 +59,6 @@ class _MainApp extends StatefulHookConsumerWidget {
|
||||
ConsumerState<_MainApp> createState() => _MainAppState();
|
||||
}
|
||||
|
||||
|
||||
class _MainAppState extends ConsumerState<_MainApp> {
|
||||
@override
|
||||
void initState() {
|
||||
@ -71,15 +71,17 @@ class _MainAppState extends ConsumerState<_MainApp> {
|
||||
final router = ref.watch(routerProvider);
|
||||
final themeMode = ref.watch(currentThemeModeProvider);
|
||||
|
||||
final (lightTheme, darkTheme) = useMemoized(() => createDualThemeData(
|
||||
seedColor: Colors.blue,
|
||||
useMaterial3: true,
|
||||
transformer: (data) => data.copyWith(
|
||||
inputDecorationTheme: const InputDecorationTheme(
|
||||
border: OutlineInputBorder(),
|
||||
final (lightTheme, darkTheme) = useMemoized(
|
||||
() => createDualThemeData(
|
||||
seedColor: Colors.blue,
|
||||
useMaterial3: true,
|
||||
transformer: (data) => data.copyWith(
|
||||
inputDecorationTheme: const InputDecorationTheme(
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
);
|
||||
|
||||
return MaterialApp.router(
|
||||
title: 'MoneyMgr',
|
||||
@ -90,4 +92,4 @@ class _MainAppState extends ConsumerState<_MainApp> {
|
||||
debugShowCheckedModeBanner: false,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user