runMasamuneApp function

Future<void> runMasamuneApp(
  1. MasamuneApp masamuneApp(
    1. List<MasamuneAdapter> adapters
    ), {
  2. List<MasamuneAdapter> masamuneAdapters = const [],
})

Function to apply MasamuneAdapter for Masamune Framework just before runApp, etc.

Runs instead of runApp.

runApp internally by passing masamuneApp to masamuneApp.

Passing masamuneAdapters makes it easy to use additional plug-ins for the Masamune Framework.

(If masamuneAdapters is specified, adapters must also be passed in MasamuneApp.

Masamune Framework用のMasamuneAdapterrunAppの直前などに適用するためのファンクション。

runAppの代わりに実行します。

masamuneAppMasamuneAppを渡すことで内部でrunAppを実行します。

masamuneAdaptersを渡すことでMasamune Frameworkの追加プラグインを楽に利用することができます。 (masamuneAdaptersを指定する場合はMasamuneApp内でもadaptersを渡してください。)

Implementation

Future<void> runMasamuneApp(
  MasamuneApp Function(List<MasamuneAdapter> adapters) masamuneApp, {
  // TODO: 非アクティブにするが一応残しておく
  // bool setPathUrlStrategy = true,
  List<MasamuneAdapter> masamuneAdapters = const [],
}) async {
  // TODO: 非アクティブにするが一応残しておく
  // if (setPathUrlStrategy) {
  //   AppRouter.setPathUrlStrategy();
  // }
  final useRunZonedGuarded = masamuneAdapters.any((e) => e.runZonedGuarded);
  if (useRunZonedGuarded) {
    runZonedGuarded(() async {
      WidgetsFlutterBinding.ensureInitialized();
      for (final adapter in masamuneAdapters) {
        await adapter.onPreRunApp();
      }
      runApp(masamuneApp.call(masamuneAdapters));
    }, (error, stack) {
      for (final adapter in masamuneAdapters) {
        adapter.onError(error, stack);
      }
    });
  } else {
    WidgetsFlutterBinding.ensureInitialized();
    for (final adapter in masamuneAdapters) {
      await adapter.onPreRunApp();
    }
    runApp(masamuneApp.call(masamuneAdapters));
  }
}