@@ -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: (() => futureToPromise (initializeEngine ())).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
@@ -81,18 +90,19 @@ abstract class FlutterAppRunner {
8190@anonymous
8291@staticInterop
8392abstract class RunAppFnParameters {
93+ external factory RunAppFnParameters ();
8494}
8595
8696/// Typedef for the function that runs the flutter app main entrypoint.
87- typedef RunAppFn = Promise <FlutterApp > Function ([RunAppFnParameters ? ]);
97+ typedef RunAppFn = Future <FlutterApp > Function ([RunAppFnParameters ? ]);
8898
8999// FlutterApp
90100
91101/// A class that exposes the public API of a running Flutter Web App running.
92102@JS ()
93103@anonymous
94104@staticInterop
95- abstract class FlutterApp {
105+ abstract class FlutterApp extends JSObject {
96106 /// Cleans a Flutter app
97107 external factory FlutterApp ();
98108}
0 commit comments