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
? HydratedStorageDirectory.web
: HydratedStorageDirectory(
(await getTemporaryDirectory()).path,
),
);
HydratedBloc.storage = storage;
Bloc.observer = BlocExceptionObserver(onException: onException);
final appbuilder =
await rootWidgetBuilder((appBuilder) => appBuilder);
if (appbuilder == null) {
return;
} else {
runApp(
appbuilder,
);
}
},
(exception, stackTrace) async {
debugPrint('>>> $exception, $stackTrace');
onException(exception, stackTrace);
},
);