run static method
Future<void>
run({
- required OnExceptionCallBack onException,
- required RootWidgetBuilder rootWidgetBuilder,
- FlutterErrorBuilder? flutterErrorBuilder,
Implementation
static Future<void> run({
required OnExceptionCallBack onException,
required RootWidgetBuilder rootWidgetBuilder,
/// To provide custom widget for flutter errors
/// This will override the default [ErrorWidget]
/// https://docs.flutter.dev/testing/errors#handling-all-types-of-errors
FlutterErrorBuilder? flutterErrorBuilder,
}) async =>
runZonedGuarded(
() async {
WidgetsFlutterBinding.ensureInitialized();
AppCubit.packageInfo = await PackageInfo.fromPlatform();
// Does not support web https://docs.flutter.dev/testing/errors#handling-all-types-of-errors
// https://github.com/flutter/flutter/issues/100277
FlutterError.onError = (details, {bool forceReport = false}) {
debugPrint('>>> ${details.exception}, ${details.stack}');
onException(details.exception, details.stack);
};
ErrorWidget.builder = (FlutterErrorDetails error) {
if (error.stack != null) {
Zone.current.handleUncaughtError(error.exception, error.stack!);
}
return _buildDebugErrorWidget(
error: error,
flutterErrorBuilder: flutterErrorBuilder,
);
};
final storage = await HydratedStorage.build(
storageDirectory: kIsWeb
? HydratedStorage.webStorageDirectory
: await getTemporaryDirectory(),
);
HydratedBloc.storage = storage;
Bloc.observer = BlocExceptionObserver(onException: onException);
runApp(
await rootWidgetBuilder((appBuilder) => appBuilder),
);
},
(exception, stackTrace) async {
debugPrint('>>> $exception, $stackTrace');
onException(exception, stackTrace);
},
);