@@ -8,9 +8,7 @@ library js_loader;
88import 'dart:js_interop' ;
99
1010import 'package:js/js_util.dart' as js_util;
11-
12- import '../configuration.dart' ;
13- import 'js_promise.dart' ;
11+ import 'package:ui/src/engine.dart' ;
1412
1513@JS ()
1614@staticInterop
@@ -34,6 +32,17 @@ extension FlutterLoaderExtension on FlutterLoader {
3432 bool get isAutoStart => ! js_util.hasProperty (this , 'didCreateEngineInitializer' );
3533}
3634
35+ /// Typedef for the function that initializes the flutter engine.
36+ /// ///
37+ /// [JsFlutterConfiguration] comes from `../configuration.dart` . It is the same
38+ /// object that can be used to configure flutter "inline", through the
39+ /// (to be deprecated) `window.flutterConfiguration` object.
40+ typedef InitializeEngineFn = Future <FlutterAppRunner > Function ([JsFlutterConfiguration ? ]);
41+
42+ /// Typedef for the `autoStart` function that can be called straight from an engine initializer instance.
43+ /// (Similar to [RunAppFn] , but taking no specific "runApp" parameters).
44+ typedef ImmediateRunAppFn = Future <FlutterApp > Function ();
45+
3746// FlutterEngineInitializer
3847
3948/// An object that allows the user to initialize the Engine of a Flutter App.
@@ -44,34 +53,34 @@ extension FlutterLoaderExtension on FlutterLoader {
4453@anonymous
4554@staticInterop
4655abstract class FlutterEngineInitializer {
47- external factory FlutterEngineInitializer ({
56+ factory FlutterEngineInitializer ({
4857 required InitializeEngineFn initializeEngine,
4958 required ImmediateRunAppFn autoStart,
59+ }) => FlutterEngineInitializer ._(
60+ initializeEngine: (([JsFlutterConfiguration ? config]) => futureToPromise (initializeEngine (config))).toJS,
61+ autoStart: (() => futureToPromise (autoStart ())).toJS,
62+ );
63+ external factory FlutterEngineInitializer ._({
64+ required JSFunction initializeEngine,
65+ required JSFunction autoStart,
5066 });
5167}
5268
53- /// Typedef for the function that initializes the flutter engine.
54- ///
55- /// [JsFlutterConfiguration] comes from `../configuration.dart` . It is the same
56- /// object that can be used to configure flutter "inline", through the
57- /// (to be deprecated) `window.flutterConfiguration` object.
58- typedef InitializeEngineFn = Promise <FlutterAppRunner > Function ([JsFlutterConfiguration ? ]);
59-
60- /// Typedef for the `autoStart` function that can be called straight from an engine initializer instance.
61- /// (Similar to [RunAppFn] , but taking no specific "runApp" parameters).
62- typedef ImmediateRunAppFn = Promise <FlutterApp > Function ();
63-
6469// FlutterAppRunner
6570
6671/// A class that exposes a function that runs the Flutter app,
6772/// and returns a promise of a FlutterAppCleaner.
6873@JS ()
6974@anonymous
7075@staticInterop
71- abstract class FlutterAppRunner {
76+ abstract class FlutterAppRunner extends JSObject {
77+ factory FlutterAppRunner ({required RunAppFn runApp,}) => FlutterAppRunner ._(
78+ runApp: (([RunAppFnParameters ? args]) => futureToPromise (runApp (args))).toJS
79+ );
80+
7281 /// Runs a flutter app
73- external factory FlutterAppRunner ({
74- required RunAppFn runApp, // Returns an App
82+ external factory FlutterAppRunner ._ ({
83+ required JSFunction runApp, // Returns an App
7584 });
7685}
7786
@@ -84,15 +93,15 @@ abstract class RunAppFnParameters {
8493}
8594
8695/// Typedef for the function that runs the flutter app main entrypoint.
87- typedef RunAppFn = Promise <FlutterApp > Function ([RunAppFnParameters ? ]);
96+ typedef RunAppFn = Future <FlutterApp > Function ([RunAppFnParameters ? ]);
8897
8998// FlutterApp
9099
91100/// A class that exposes the public API of a running Flutter Web App running.
92101@JS ()
93102@anonymous
94103@staticInterop
95- abstract class FlutterApp {
104+ abstract class FlutterApp extends JSObject {
96105 /// Cleans a Flutter app
97106 external factory FlutterApp ();
98107}
0 commit comments