46 lines
1.3 KiB
Dart
46 lines
1.3 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:logging/logging.dart';
|
|
import 'package:starting_template/core/dependency_injection/get_it.dart';
|
|
import 'package:starting_template/core/enums/feature_flag.dart';
|
|
import 'package:starting_template/core/logger/app_logger.dart';
|
|
import 'package:starting_template/core/logger/simple_log_printer.dart';
|
|
import 'package:starting_template/core/utils/app_bloc_observer.dart';
|
|
import 'package:starting_template/core/utils/env.dart';
|
|
|
|
Future<void> bootstrap(FutureOr<Widget> Function() builder) async {
|
|
// Initialize logging
|
|
final logger = AppLogger();
|
|
|
|
await runZonedGuarded(
|
|
() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
// Verify that we have the correct environment
|
|
Env.verify();
|
|
|
|
if (Env.isFeatureEnabled(FeatureFlag.logger)) {
|
|
logger
|
|
..level = Env.loggerLevel
|
|
..addPlugin(const SimpleLogPrinter());
|
|
} else {
|
|
logger.level = Level.OFF;
|
|
}
|
|
|
|
debugPrint(Env.summary); // Print even if logger is disabled
|
|
|
|
Bloc.observer = AppBlocObserver();
|
|
|
|
// Intialize dependencies injection
|
|
await GetItInitializer.init();
|
|
|
|
runApp(await builder());
|
|
},
|
|
(error, stackTrace) {
|
|
logger.error(error.toString(), stackTrace);
|
|
},
|
|
);
|
|
}
|