@@ -9,17 +9,29 @@ import 'package:webf/devtools.dart';
9
9
import 'package:webf/webf.dart' ;
10
10
11
11
@pragma ('vm:entry-point' )
12
- void mainWithoutNewEngine () => runApp (MyApp (showNewEngineButton: false ));
12
+ void mainWithoutNewEngine () => runApp (MyApp (
13
+ showNewEngineButton: false ,
14
+ disableDoublePage: false ,
15
+ ));
16
+
17
+ @pragma ('vm:entry-point' )
18
+ void mainDoubleEngine () =>
19
+ runApp (MyApp (showNewEngineButton: false , disableDoublePage: true ));
13
20
14
21
void main () {
15
22
runApp (MyApp (
16
23
showNewEngineButton: true ,
24
+ disableDoublePage: false ,
17
25
));
18
26
}
19
27
20
28
class MyApp extends StatelessWidget {
21
- MyApp ({super .key, required this .showNewEngineButton});
29
+ MyApp (
30
+ {super .key,
31
+ required this .showNewEngineButton,
32
+ required this .disableDoublePage});
22
33
bool showNewEngineButton = true ;
34
+ bool disableDoublePage = false ;
23
35
24
36
// This widget is the root of your application.
25
37
@override
@@ -29,20 +41,29 @@ class MyApp extends StatelessWidget {
29
41
// theme: ThemeData.dark(),
30
42
debugShowCheckedModeBanner: false ,
31
43
home: FirstPage (
32
- title: 'Landing Bay' , showNewEngineButton: showNewEngineButton),
44
+ title: 'Landing Bay' ,
45
+ showNewEngineButton: showNewEngineButton,
46
+ disableDoublePage: disableDoublePage,
47
+ ),
33
48
);
34
49
}
35
50
}
36
51
37
52
class FirstPage extends StatefulWidget {
38
53
FirstPage (
39
- {super .key, required this .title, required this .showNewEngineButton});
54
+ {super .key,
55
+ required this .title,
56
+ required this .showNewEngineButton,
57
+ required this .disableDoublePage});
40
58
final String title;
41
- final bool showNewEngineButton;
59
+ bool showNewEngineButton = true ;
60
+ bool disableDoublePage = false ;
42
61
43
62
@override
44
63
State <StatefulWidget > createState () {
45
- return FirstPageState (showNewEngineButton: showNewEngineButton);
64
+ return FirstPageState (
65
+ showNewEngineButton: showNewEngineButton,
66
+ disableDoublePage: disableDoublePage);
46
67
}
47
68
}
48
69
@@ -53,10 +74,12 @@ enum ThreadMode {
53
74
}
54
75
55
76
class FirstPageState extends State <FirstPage > {
56
- FirstPageState ({required this .showNewEngineButton});
77
+ FirstPageState (
78
+ {required this .showNewEngineButton, required this .disableDoublePage});
57
79
58
80
static const platform = MethodChannel ('com.example.flutter/new_engine' );
59
- final bool showNewEngineButton;
81
+ bool showNewEngineButton = true ;
82
+ bool disableDoublePage = false ;
60
83
61
84
DedicatedThreadGroup threadGroup = DedicatedThreadGroup ();
62
85
@@ -111,42 +134,56 @@ class FirstPageState extends State<FirstPage> {
111
134
},
112
135
child: const Text ('Same single thread' ),
113
136
),
114
- const SizedBox (height: 20 ),
115
- ElevatedButton (
137
+ ];
138
+
139
+ if (disableDoublePage == false ) {
140
+ buttons.add (const SizedBox (height: 20 ));
141
+ buttons.add (ElevatedButton (
116
142
onPressed: () {
117
143
Navigator .push (context, MaterialPageRoute (builder: (context) {
118
144
return WebFDemoTwoPage (
119
145
controller1: webFController (ThreadMode .differentDedicated),
120
146
controller2: webFController (ThreadMode .differentDedicated));
121
147
}));
122
148
},
123
- child: const Text ('Different dedicated thread (Two page)' ),
124
- ),
125
- const SizedBox (height: 20 ),
126
- ElevatedButton (
149
+ child: const Text ('Different dedicated thread (Double page)' ),
150
+ ));
151
+ buttons. add ( const SizedBox (height: 20 ));
152
+ buttons. add ( ElevatedButton (
127
153
onPressed: () {
128
154
Navigator .push (context, MaterialPageRoute (builder: (context) {
129
155
return WebFDemoTwoPage (
130
156
controller1: webFController (ThreadMode .sameDedicated),
131
157
controller2: webFController (ThreadMode .sameDedicated));
132
158
}));
133
159
},
134
- child: const Text ('Same dedicated thread (Two page)' ),
135
- ),
136
- const SizedBox (height: 20 ),
137
- ElevatedButton (
160
+ child: const Text ('Same dedicated thread (Double page)' ),
161
+ ));
162
+ buttons. add ( const SizedBox (height: 20 ));
163
+ buttons. add ( ElevatedButton (
138
164
onPressed: () {
139
165
Navigator .push (context, MaterialPageRoute (builder: (context) {
140
166
return WebFDemoTwoPage (
141
167
controller1: webFController (ThreadMode .sameSingle),
142
168
controller2: webFController (ThreadMode .sameSingle));
143
169
}));
144
170
},
145
- child: const Text ('Same single thread (Two page)' ),
146
- ),
147
- ];
171
+ child: const Text ('Same single thread (Double page)' ),
172
+ ));
173
+ }
148
174
149
175
if (showNewEngineButton) {
176
+ buttons.add (const SizedBox (height: 20 ));
177
+ buttons.add (ElevatedButton (
178
+ onPressed: () async {
179
+ try {
180
+ await platform.invokeMethod ('newDoubleEngine' );
181
+ } on PlatformException catch (e) {
182
+ print ("Failed to create engine: '${e .message }'." );
183
+ }
184
+ },
185
+ child: const Text ('Double Engine(supported iOS)' ),
186
+ ));
150
187
buttons.add (const SizedBox (height: 20 ));
151
188
buttons.add (ElevatedButton (
152
189
onPressed: () async {
0 commit comments