51 lines
1.4 KiB
Dart
51 lines
1.4 KiB
Dart
import 'dart:async';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:hive_flutter/hive_flutter.dart';
|
|
import 'core/storage/local_storage.dart';
|
|
import 'core/di/injection_container.dart';
|
|
import 'core/utils/logger.dart';
|
|
|
|
Future<void> bootstrap(FutureOr<Widget> Function() builder) async {
|
|
// Ensure Flutter bindings are initialized
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
// Set preferred orientations
|
|
await SystemChrome.setPreferredOrientations([
|
|
DeviceOrientation.portraitUp,
|
|
DeviceOrientation.portraitDown,
|
|
]);
|
|
|
|
// Set system UI overlay style
|
|
SystemChrome.setSystemUIOverlayStyle(
|
|
const SystemUiOverlayStyle(
|
|
statusBarColor: Colors.transparent,
|
|
statusBarIconBrightness: Brightness.dark,
|
|
systemNavigationBarColor: Colors.white,
|
|
systemNavigationBarIconBrightness: Brightness.dark,
|
|
),
|
|
);
|
|
|
|
// Initialize Hive
|
|
await Hive.initFlutter();
|
|
|
|
// Initialize LocalStorage
|
|
final localStorage = await LocalStorage.init();
|
|
|
|
// Create provider container with initialized dependencies
|
|
final container = createProviderContainer(localStorage);
|
|
|
|
// Run app with error handling
|
|
FlutterError.onError = (details) {
|
|
AppLogger.e('Flutter Error', details.exception, details.stack);
|
|
};
|
|
|
|
runApp(
|
|
UncontrolledProviderScope(
|
|
container: container,
|
|
child: await builder(),
|
|
),
|
|
);
|
|
}
|