import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:logging/logging.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/dependency_injection/get_it.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/feature_flag.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/logger/app_logger.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/logger/simple_log_printer.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/utils/app_bloc_observer.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/utils/env.dart'; Future bootstrap(FutureOr 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); }, ); }