Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
flutter_boost_1.22.4
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
谢冠章
flutter_boost_1.22.4
Commits
50022e7f
Commit
50022e7f
authored
Apr 13, 2020
by
AlexVincent525
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🎨
Improve code in example.
parent
4871b571
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
408 additions
and
411 deletions
+408
-411
example/lib/main.dart
example/lib/main.dart
+9
-11
example/lib/platform_view.dart
example/lib/platform_view.dart
+4
-4
example/lib/simple_page_widgets.dart
example/lib/simple_page_widgets.dart
+318
-308
example/lib/test_input.dart
example/lib/test_input.dart
+75
-85
example/test/widget_test.dart
example/test/widget_test.dart
+2
-3
No files found.
example/lib/main.dart
View file @
50022e7f
...
...
@@ -17,7 +17,7 @@ class _MyAppState extends State<MyApp> {
super
.
initState
();
FlutterBoost
.
singleton
.
registerPageBuilders
({
'embeded'
:
(
pageName
,
params
,
_
)
=>
Embe
dedFirstRouteWidget
(),
'embeded'
:
(
pageName
,
params
,
_
)
=>
Embed
dedFirstRouteWidget
(),
'first'
:
(
pageName
,
params
,
_
)
=>
FirstRouteWidget
(),
'firstFirst'
:
(
pageName
,
params
,
_
)
=>
FirstFirstRouteWidget
(),
'second'
:
(
pageName
,
params
,
_
)
=>
SecondRouteWidget
(),
...
...
@@ -25,14 +25,16 @@ class _MyAppState extends State<MyApp> {
'tab'
:
(
pageName
,
params
,
_
)
=>
TabRouteWidget
(),
'platformView'
:
(
pageName
,
params
,
_
)
=>
PlatformRouteWidget
(),
'flutterFragment'
:
(
pageName
,
params
,
_
)
=>
FragmentRouteWidget
(
params
),
///可以在native层通过 getContainerParams 来传递参数
'flutterPage'
:
(
pageName
,
params
,
_
)
{
print
(
"flutterPage params:
$params
"
);
return
FlutterRouteWidget
(
params:
params
);
return
FlutterRouteWidget
(
params:
params
);
},
});
FlutterBoost
.
singleton
.
addBoostNavigatorObserver
(
TestBoostNavigatorObserver
());
FlutterBoost
.
singleton
.
addBoostNavigatorObserver
(
TestBoostNavigatorObserver
());
}
@override
...
...
@@ -40,18 +42,15 @@ class _MyAppState extends State<MyApp> {
return
MaterialApp
(
title:
'Flutter Boost example'
,
builder:
FlutterBoost
.
init
(
postPush:
_onRoutePushed
),
home:
Container
(
color:
Colors
.
white
));
home:
Container
(
color:
Colors
.
white
));
}
void
_onRoutePushed
(
String
pageName
,
String
uniqueId
,
Map
params
,
Route
route
,
Future
_
)
{
}
String
pageName
,
String
uniqueId
,
Map
params
,
Route
route
,
Future
_
)
{}
}
class
TestBoostNavigatorObserver
extends
NavigatorObserver
{
void
didPush
(
Route
<
dynamic
>
route
,
Route
<
dynamic
>
previousRoute
)
{
class
TestBoostNavigatorObserver
extends
NavigatorObserver
{
void
didPush
(
Route
<
dynamic
>
route
,
Route
<
dynamic
>
previousRoute
)
{
print
(
"flutterboost#didPush"
);
}
...
...
@@ -67,4 +66,3 @@ class TestBoostNavigatorObserver extends NavigatorObserver{
print
(
"flutterboost#didReplace"
);
}
}
example/lib/platform_view.dart
View file @
50022e7f
...
...
@@ -3,7 +3,7 @@ import 'package:flutter/foundation.dart';
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
typedef
void
TextViewCreatedCallback
(
TextViewController
controller
);
typedef
TextViewCreatedCallback
=
void
Function
(
TextViewController
controller
);
class
TextView
extends
StatefulWidget
{
const
TextView
({
...
...
@@ -34,13 +34,13 @@ class _TextViewState extends State<TextView> {
if
(
widget
.
onTextViewCreated
==
null
)
{
return
;
}
widget
.
onTextViewCreated
(
new
TextViewController
.
_
(
id
));
widget
.
onTextViewCreated
(
TextViewController
.
_
(
id
));
}
}
class
TextViewController
{
TextViewController
.
_
(
int
id
)
:
_channel
=
new
MethodChannel
(
'plugins.felix.angelov/textview_
$id
'
);
:
_channel
=
MethodChannel
(
'plugins.felix.angelov/textview_
$id
'
);
final
MethodChannel
_channel
;
...
...
@@ -48,4 +48,4 @@ class TextViewController {
assert
(
text
!=
null
);
return
_channel
.
invokeMethod
(
'setText'
,
text
);
}
}
\ No newline at end of file
}
example/lib/simple_page_widgets.dart
View file @
50022e7f
...
...
@@ -5,11 +5,10 @@ import 'package:flutter_boost_example/platform_view.dart';
class
FirstRouteWidget
extends
StatefulWidget
{
@override
State
<
StatefulWidget
>
createState
()
{
return
new
_FirstRouteWidgetState
();
}
State
<
StatefulWidget
>
createState
()
=>
_FirstRouteWidgetState
();
}
class
_FirstRouteWidgetState
extends
State
<
FirstRouteWidget
>{
class
_FirstRouteWidgetState
extends
State
<
FirstRouteWidget
>
{
_FirstRouteWidgetState
();
@override
...
...
@@ -45,80 +44,86 @@ class _FirstRouteWidgetState extends State<FirstRouteWidget>{
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'First Route'
),
),
appBar:
AppBar
(
title:
const
Text
(
'First Route'
)),
body:
Center
(
child:
Column
(
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
children:
<
Widget
>[
RaisedButton
(
child:
Text
(
'Open native page'
),
onPressed:
()
{
print
(
"open natve page!"
);
FlutterBoost
.
singleton
.
open
(
"native"
).
then
((
Map
value
)
{
print
(
"call me when page is finished. did recieve native route result
$value
"
);
});
},
),
RaisedButton
(
child:
Text
(
'Open FF route'
),
onPressed:
()
{
print
(
"open FF page!"
);
FlutterBoost
.
singleton
.
open
(
"firstFirst"
).
then
((
Map
value
)
{
print
(
"call me when page is finished. did recieve FF route result
$value
"
);
});
},
),
RaisedButton
(
child:
Text
(
'Open second route1'
),
onPressed:
()
{
print
(
"open second page!"
);
FlutterBoost
.
singleton
.
open
(
"second"
).
then
((
Map
value
)
{
print
(
"call me when page is finished. did recieve second route result
$value
"
);
});
},
),
RaisedButton
(
child:
Text
(
'Present second stateful route'
),
onPressed:
()
{
print
(
"Present second stateful page!"
);
FlutterBoost
.
singleton
.
open
(
"secondStateful"
,
urlParams:
<
dynamic
,
dynamic
>{
"present"
:
true
}).
then
((
Map
value
)
{
print
(
"call me when page is finished. did recieve second stateful route result
$value
"
);
});
},
),
RaisedButton
(
child:
Text
(
'Present second route'
),
onPressed:
()
{
print
(
"Present second page!"
);
FlutterBoost
.
singleton
.
open
(
"second"
,
urlParams:
<
dynamic
,
dynamic
>{
"present"
:
true
}).
then
((
Map
value
)
{
print
(
"call me when page is finished. did recieve second route result
$value
"
);
});
},
),
],
child:
const
Text
(
'Open native page'
),
onPressed:
()
{
print
(
'open natve page!'
);
FlutterBoost
.
singleton
.
open
(
'native'
)
.
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
'call me when page is finished. did recieve native route result
$value
'
);
});
},
),
RaisedButton
(
child:
const
Text
(
'Open FF route'
),
onPressed:
()
{
print
(
'open FF page!'
);
FlutterBoost
.
singleton
.
open
(
'firstFirst'
)
.
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
'call me when page is finished. did recieve FF route result
$value
'
);
});
},
),
RaisedButton
(
child:
const
Text
(
'Open second route1'
),
onPressed:
()
{
print
(
'open second page!'
);
FlutterBoost
.
singleton
.
open
(
'second'
)
.
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
'call me when page is finished. did recieve second route result
$value
'
);
});
},
),
RaisedButton
(
child:
const
Text
(
'Present second stateful route'
),
onPressed:
()
{
print
(
'Present second stateful page!'
);
FlutterBoost
.
singleton
.
open
(
'secondStateful'
,
urlParams:
<
String
,
dynamic
>{
'present'
:
true
}).
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
'call me when page is finished. did recieve second stateful route result
$value
'
);
});
},
),
RaisedButton
(
child:
const
Text
(
'Present second route'
),
onPressed:
()
{
print
(
'Present second page!'
);
FlutterBoost
.
singleton
.
open
(
'second'
,
urlParams:
<
String
,
dynamic
>{
'present'
:
true
}).
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
'call me when page is finished. did recieve second route result
$value
'
);
});
},
),
],
),
),
);
}
}
class
FirstFirstRouteWidget
extends
StatefulWidget
{
@override
State
<
StatefulWidget
>
createState
()
{
return
new
_FirstFirstRouteWidgetState
();
}
State
<
StatefulWidget
>
createState
()
=>
_FirstFirstRouteWidgetState
();
}
class
_FirstFirstRouteWidgetState
extends
State
<
FirstFirstRouteWidget
>{
class
_FirstFirstRouteWidgetState
extends
State
<
FirstFirstRouteWidget
>
{
_FirstFirstRouteWidgetState
();
@override
...
...
@@ -154,20 +159,18 @@ class _FirstFirstRouteWidgetState extends State<FirstFirstRouteWidget>{
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'First Route'
),
),
appBar:
AppBar
(
title:
const
Text
(
'First Route'
)),
body:
Center
(
child:
RaisedButton
(
child:
Text
(
'Open first route'
),
child:
const
Text
(
'Open first route'
),
onPressed:
()
{
print
(
"open first page again!"
);
FlutterBoost
.
singleton
.
open
(
"first"
).
then
((
Map
value
){
print
(
"did recieve first route result"
);
print
(
"did recieve first route result
$value
"
);
print
(
'open first page again!'
);
FlutterBoost
.
singleton
.
open
(
'first'
)
.
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
'did recieve first route result'
);
print
(
'did recieve first route result
$value
'
);
});
},
),
),
...
...
@@ -175,34 +178,33 @@ class _FirstFirstRouteWidgetState extends State<FirstFirstRouteWidget>{
}
}
class
EmbededFirstRouteWidget
extends
StatefulWidget
{
class
Embed
d
edFirstRouteWidget
extends
StatefulWidget
{
@override
State
<
StatefulWidget
>
createState
()
{
// TODO: implement createState
return
_EmbededFirstRouteWidgetState
();
}
State
<
StatefulWidget
>
createState
()
=>
_EmbeddedFirstRouteWidgetState
();
}
class
_Embed
edFirstRouteWidgetState
extends
State
<
Embe
dedFirstRouteWidget
>
{
class
_Embed
dedFirstRouteWidgetState
extends
State
<
Embed
dedFirstRouteWidget
>
{
@override
Widget
build
(
BuildContext
context
)
{
print
(
'_EmbededFirstRouteWidgetState build called!'
);
return
Scaffold
(
body:
Center
(
child:
RaisedButton
(
child:
Text
(
'Open second route2'
),
child:
const
Text
(
'Open second route2'
),
onPressed:
()
{
print
(
"open second page!"
);
FlutterBoost
.
singleton
.
open
(
"second"
).
then
((
Map
value
)
{
print
(
'open second page!'
);
FlutterBoost
.
singleton
.
open
(
'second'
)
.
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
"call me when page is finished. did recieve second route result
$value
"
);
'call me when page is finished. did recieve second route result
$value
'
);
});
},
),
),
);
}
@override
void
dispose
()
{
print
(
'[XDEBUG]:_EmbededFirstRouteWidgetState disposing~'
);
...
...
@@ -212,29 +214,24 @@ class _EmbededFirstRouteWidgetState extends State<EmbededFirstRouteWidget> {
class
SecondStatefulRouteWidget
extends
StatefulWidget
{
@override
State
<
StatefulWidget
>
createState
()
{
// TODO: implement createState
return
_SecondStatefulRouteWidgetState
();
}
State
<
StatefulWidget
>
createState
()
=>
_SecondStatefulRouteWidgetState
();
}
class
_SecondStatefulRouteWidgetState
extends
State
<
SecondStatefulRouteWidget
>{
class
_SecondStatefulRouteWidgetState
extends
State
<
SecondStatefulRouteWidget
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
"SecondStateful Route"
),
),
appBar:
AppBar
(
title:
const
Text
(
'SecondStateful Route'
)),
body:
Center
(
child:
RaisedButton
(
onPressed:
()
{
// Navigate back to first route when tapped.
BoostContainerSettings
settings
=
final
BoostContainerSettings
settings
=
BoostContainer
.
of
(
context
).
settings
;
FlutterBoost
.
singleton
.
close
(
settings
.
uniqueId
,
result:
<
dynamic
,
dynamic
>{
"result"
:
"data from second"
});
result:
<
String
,
dynamic
>{
'result'
:
'data from second'
});
},
child:
Text
(
'Go back with result!'
),
child:
const
Text
(
'Go back with result!'
),
),
),
);
...
...
@@ -251,20 +248,19 @@ class SecondRouteWidget extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
"Second Route"
),
),
appBar:
AppBar
(
title:
const
Text
(
'Second Route'
)),
body:
Center
(
child:
RaisedButton
(
onPressed:
()
{
// Navigate back to first route when tapped.
BoostContainerSettings
settings
=
final
BoostContainerSettings
settings
=
BoostContainer
.
of
(
context
).
settings
;
FlutterBoost
.
singleton
.
close
(
settings
.
uniqueId
,
result:
<
dynamic
,
dynamic
>{
"result"
:
"data from second"
});
FlutterBoost
.
singleton
.
close
(
settings
.
uniqueId
,
result:
<
String
,
dynamic
>{
'result'
:
'data from second'
},
);
},
child:
Text
(
'Go back with result!'
),
child:
const
Text
(
'Go back with result!'
),
),
),
);
...
...
@@ -275,15 +271,13 @@ class TabRouteWidget extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
"Tab Route"
),
),
appBar:
AppBar
(
title:
const
Text
(
'Tab Route'
)),
body:
Center
(
child:
RaisedButton
(
onPressed:
()
{
FlutterBoost
.
singleton
.
open
(
"second"
);
FlutterBoost
.
singleton
.
open
(
'second'
);
},
child:
Text
(
'Open second route3'
),
child:
const
Text
(
'Open second route3'
),
),
),
);
...
...
@@ -294,17 +288,17 @@ class PlatformRouteWidget extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
"Platform Route"
),
),
appBar:
AppBar
(
title:
const
Text
(
'Platform Route'
)),
body:
Center
(
child:
RaisedButton
(
child:
TextView
(),
child:
const
TextView
(),
onPressed:
()
{
print
(
"open second page!"
);
FlutterBoost
.
singleton
.
open
(
"second"
).
then
((
Map
value
)
{
print
(
'open second page!'
);
FlutterBoost
.
singleton
.
open
(
'second'
)
.
then
((
Map
<
String
,
dynamic
>
value
)
{
print
(
"call me when page is finished. did recieve second route result
$value
"
);
'call me when page is finished. did recieve second route result
$value
'
);
});
},
),
...
...
@@ -312,9 +306,11 @@ class PlatformRouteWidget extends StatelessWidget {
);
}
}
class
FlutterRouteWidget
extends
StatefulWidget
{
FlutterRouteWidget
({
this
.
params
,
this
.
message
});
final
Map
params
;
const
FlutterRouteWidget
({
this
.
params
,
this
.
message
});
final
Map
<
String
,
dynamic
>
params
;
final
String
message
;
@override
...
...
@@ -322,178 +318,199 @@ class FlutterRouteWidget extends StatefulWidget {
}
class
_FlutterRouteWidgetState
extends
State
<
FlutterRouteWidget
>
{
final
TextEditingController
_usernameController
=
TextEditingController
();
@override
Widget
build
(
BuildContext
context
)
{
final
String
message
=
widget
.
message
;
final
String
message
=
widget
.
message
;
return
Scaffold
(
appBar:
AppBar
(
brightness:
Brightness
.
light
,
brightness:
Brightness
.
light
,
backgroundColor:
Colors
.
white
,
textTheme:
new
TextTheme
(
title:
TextStyle
(
color:
Colors
.
black
))
,
title:
Text
(
'flutter_boost_example'
),
textTheme:
const
TextTheme
(
title:
TextStyle
(
color:
Colors
.
black
)),
title:
const
Text
(
'flutter_boost_example'
),
),
body:
SingleChildScrollView
(
child:
Container
(
margin:
const
EdgeInsets
.
all
(
24.0
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
<
Widget
>[
Container
(
margin:
const
EdgeInsets
.
only
(
top:
10.0
,
bottom:
20.0
),
child:
Text
(
message
??
"This is a flutter activity
\n
params:
${widget.params}
"
,
style:
TextStyle
(
fontSize:
28.0
,
color:
Colors
.
blue
),
),
alignment:
AlignmentDirectional
.
center
,
child:
Container
(
margin:
const
EdgeInsets
.
all
(
24.0
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
<
Widget
>[
Container
(
margin:
const
EdgeInsets
.
only
(
top:
10.0
,
bottom:
20.0
),
child:
Text
(
message
??
'This is a flutter activity
\n
params:
${widget.params}
'
,
style:
TextStyle
(
fontSize:
28.0
,
color:
Colors
.
blue
),
),
// Expanded(child: Container()),
const
CupertinoTextField
(
prefix:
Icon
(
CupertinoIcons
.
person_solid
,
color:
CupertinoColors
.
lightBackgroundGray
,
size:
28.0
,
alignment:
AlignmentDirectional
.
center
,
),
const
CupertinoTextField
(
prefix:
Icon
(
CupertinoIcons
.
person_solid
,
color:
CupertinoColors
.
lightBackgroundGray
,
size:
28.0
,
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
6.0
,
vertical:
12.0
),
clearButtonMode:
OverlayVisibilityMode
.
editing
,
textCapitalization:
TextCapitalization
.
words
,
autocorrect:
false
,
decoration:
BoxDecoration
(
border:
Border
(
bottom:
BorderSide
(
width:
0.0
,
color:
CupertinoColors
.
inactiveGray
),
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
6.0
,
vertical:
12.0
),
clearButtonMode:
OverlayVisibilityMode
.
editing
,
textCapitalization:
TextCapitalization
.
words
,
autocorrect:
false
,
decoration:
BoxDecoration
(
border:
Border
(
bottom:
BorderSide
(
width:
0.0
,
color:
CupertinoColors
.
inactiveGray
)),
),
placeholder:
'Name'
,
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open native page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
placeholder:
'Name'
,
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open native page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
///后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
///例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"sample://nativePage"
,
urlParams:
<
dynamic
,
dynamic
>{
"query"
:
{
"aaa"
:
"bbb"
}
}),
/// 后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
/// 例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'sample://nativePage'
,
urlParams:
<
String
,
dynamic
>{
'query'
:
<
String
,
dynamic
>{
'aaa'
:
'bbb'
}
},
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open first'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open first'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
///后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
///例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"first"
,
urlParams:
<
dynamic
,
dynamic
>{
"query"
:
{
"aaa"
:
"bbb"
}
}),
/// 后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
/// 例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'first'
,
urlParams:
<
String
,
dynamic
>{
'query'
:
<
String
,
dynamic
>{
'aaa'
:
'bbb'
}
},
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open second'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
///后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
///例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"second"
,
urlParams:
<
dynamic
,
dynamic
>
{
"query"
:
{
"aaa"
:
"bbb"
}
}),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open second'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open tab'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
///后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
///例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"tab"
,
urlParams:
<
dynamic
,
dynamic
>
{
"query"
:
{
"aaa"
:
"bbb"
}
}),
/// 后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
/// 例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'second'
,
urlParams:
<
String
,
dynamic
>{
'query'
:
<
String
,
dynamic
>{
'aaa'
:
'bbb'
}
},
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open flutter page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
///后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
///例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"sample://flutterPage"
,
urlParams:
<
dynamic
,
dynamic
>
{
"query"
:
{
"aaa"
:
"bbb"
}
}),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open tab'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'push flutter widget'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
onTap:
()
{
Navigator
.
push
<
dynamic
>(
context
,
MaterialPageRoute
<
dynamic
>(
builder:
(
_
)
=>
PushWidget
()));
/// 后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
/// 例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'tab'
,
urlParams:
<
String
,
dynamic
>{
'query'
:
<
String
,
dynamic
>{
'aaa'
:
'bbb'
}
},
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open flutter page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
/// 后面的参数会在native的IPlatform.startActivity方法回调中拼接到url的query部分。
/// 例如:sample://nativePage?aaa=bbb
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'sample://flutterPage'
,
urlParams:
<
String
,
dynamic
>{
'query'
:
<
String
,
dynamic
>{
'aaa'
:
'bbb'
}
},
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'push flutter widget'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
onTap:
()
{
Navigator
.
push
<
dynamic
>(
context
,
MaterialPageRoute
<
dynamic
>(
builder:
(
_
)
=>
PushWidget
()),
);
},
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'push Platform demo'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'push Platform demo'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
onTap:
()
{
Navigator
.
push
<
dynamic
>(
context
,
MaterialPageRoute
<
dynamic
>(
builder:
(
_
)
=>
PlatformRouteWidget
()));
Navigator
.
push
<
dynamic
>(
context
,
MaterialPageRoute
<
dynamic
>(
builder:
(
_
)
=>
PlatformRouteWidget
()),
);
},
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open flutter fragment page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"sample://flutterFragmentPage"
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open flutter fragment page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
],
),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'sample://flutterFragmentPage'
),
),
],
),
),
),
);
...
...
@@ -501,23 +518,21 @@ class _FlutterRouteWidgetState extends State<FlutterRouteWidget> {
}
class
FragmentRouteWidget
extends
StatelessWidget
{
final
Map
params
;
const
FragmentRouteWidget
(
this
.
params
)
;
FragmentRouteWidget
(
this
.
params
)
;
final
Map
<
String
,
dynamic
>
params
;
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'flutter_boost_example'
),
),
appBar:
AppBar
(
title:
const
Text
(
'flutter_boost_example'
)),
body:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
<
Widget
>[
Container
(
margin:
const
EdgeInsets
.
only
(
top:
80.0
),
child:
Text
(
"This is a flutter fragment"
,
'This is a flutter fragment'
,
style:
TextStyle
(
fontSize:
28.0
,
color:
Colors
.
blue
),
),
alignment:
AlignmentDirectional
.
center
,
...
...
@@ -525,7 +540,7 @@ class FragmentRouteWidget extends StatelessWidget {
Container
(
margin:
const
EdgeInsets
.
only
(
top:
32.0
),
child:
Text
(
params
[
'tag'
]
??
''
,
'
${params['tag']}
'
??
''
,
style:
TextStyle
(
fontSize:
28.0
,
color:
Colors
.
red
),
),
alignment:
AlignmentDirectional
.
center
,
...
...
@@ -533,37 +548,40 @@ class FragmentRouteWidget extends StatelessWidget {
Expanded
(
child:
Container
()),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open native page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"sample://nativePage"
),
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open native page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'sample://nativePage'
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open flutter page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"sample://flutterPage"
),
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open flutter page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
'sample://flutterPage'
),
),
InkWell
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
fromLTRB
(
8.0
,
8.0
,
8.0
,
80.0
),
color:
Colors
.
yellow
,
child:
Text
(
'open flutter fragment page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
)),
padding:
const
EdgeInsets
.
all
(
8.0
),
margin:
const
EdgeInsets
.
fromLTRB
(
8.0
,
8.0
,
8.0
,
80.0
),
color:
Colors
.
yellow
,
child:
const
Text
(
'open flutter fragment page'
,
style:
TextStyle
(
fontSize:
22.0
,
color:
Colors
.
black
),
),
),
onTap:
()
=>
FlutterBoost
.
singleton
.
open
(
"sample://flutterFragmentPage"
),
FlutterBoost
.
singleton
.
open
(
'sample://flutterFragmentPage'
),
)
],
),
...
...
@@ -579,15 +597,8 @@ class PushWidget extends StatefulWidget {
class
_PushWidgetState
extends
State
<
PushWidget
>
{
VoidCallback
_backPressedListenerUnsub
;
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
}
@override
void
didChangeDependencies
()
{
// TODO: implement didChangeDependencies
super
.
didChangeDependencies
();
// if (_backPressedListenerUnsub == null) {
...
...
@@ -603,7 +614,6 @@ class _PushWidgetState extends State<PushWidget> {
@override
void
dispose
()
{
// TODO: implement dispose
print
(
'[XDEBUG] - PushWidget is disposing~'
);
super
.
dispose
();
_backPressedListenerUnsub
?.
call
();
...
...
@@ -611,6 +621,6 @@ class _PushWidgetState extends State<PushWidget> {
@override
Widget
build
(
BuildContext
context
)
{
return
FlutterRouteWidget
(
message:
"Pushed Widget"
);
return
const
FlutterRouteWidget
(
message:
'Pushed Widget'
);
}
}
example/lib/test_input.dart
View file @
50022e7f
import
'package:flutter/material.dart'
;
class
TestPage
extends
StatefulWidget
{
TestPage
({
Key
key
,
this
.
title
=
"Input Test"
})
:
super
(
key:
key
);
const
TestPage
({
Key
key
,
this
.
title
=
'Input Test'
,
})
:
super
(
key:
key
);
final
String
title
;
...
...
@@ -18,95 +21,82 @@ class _TestPageState extends State<TestPage> {
});
}
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
widget
.
title
),
),
appBar:
AppBar
(
title:
Text
(
widget
.
title
)),
body:
SafeArea
(
bottom:
false
,
child:
ListView
(
children:
<
Widget
>[
Container
(
child:
Text
(
'You have pushed the button this many times:'
,
bottom:
false
,
child:
ListView
(
children:
<
Widget
>[
Container
(
child:
const
Text
(
'You have pushed the button this many times:'
,
),
margin:
const
EdgeInsets
.
all
(
8.0
),
alignment:
Alignment
.
center
,
),
margin:
const
EdgeInsets
.
all
(
8.0
),
alignment:
Alignment
.
center
,
)
,
Container
(
child:
Text
(
'
$_counter
'
,
style:
Theme
.
of
(
context
).
textTheme
.
display1
,
Container
(
child:
Text
(
'
$_counter
'
,
style:
Theme
.
of
(
context
).
textTheme
.
display1
,
),
margin:
const
EdgeInsets
.
all
(
8.0
)
,
alignment:
Alignment
.
center
,
),
margin:
const
EdgeInsets
.
all
(
8.0
),
alignment:
Alignment
.
center
,
),
Container
(
child:
TextField
(
minLines:
2
,
maxLines:
10
,
Container
(
child:
const
TextField
(
minLines:
2
,
maxLines:
10
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
TestTextField
(),
Container
(
child:
Container
(
color:
Colors
.
red
,
width:
double
.
infinity
,
height:
128.0
,
TestTextField
(
),
Container
(
child:
Container
(
color:
Colors
.
red
,
width:
double
.
infinity
,
height:
128.0
,
)
,
padding:
const
EdgeInsets
.
all
(
8.0
)
,
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
Container
(
child:
Container
(
color:
Colors
.
orange
,
width:
double
.
infinity
,
height:
128.0
,
Container
(
child:
Container
(
color:
Colors
.
orange
,
width:
double
.
infinity
,
height:
128.0
,
)
,
padding:
const
EdgeInsets
.
all
(
8.0
)
,
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
Container
(
child:
Container
(
color:
Colors
.
green
,
width:
double
.
infinity
,
height:
128.0
,
Container
(
child:
Container
(
color:
Colors
.
green
,
width:
double
.
infinity
,
height:
128.0
,
)
,
padding:
const
EdgeInsets
.
all
(
8.0
)
,
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
Container
(
child:
Container
(
color:
Colors
.
blue
,
width:
double
.
infinity
,
height:
128.0
,
Container
(
child:
Container
(
color:
Colors
.
blue
,
width:
double
.
infinity
,
height:
128.0
,
)
,
padding:
const
EdgeInsets
.
all
(
8.0
)
,
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
Container
(
child:
Container
(
color:
Colors
.
yellow
,
width:
double
.
infinity
,
height:
128.0
,
Container
(
child:
Container
(
color:
Colors
.
yellow
,
width:
double
.
infinity
,
height:
128.0
,
)
,
padding:
const
EdgeInsets
.
all
(
8.0
)
,
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
Container
(
child:
TextField
(
minLines:
2
,
maxLines:
10
,
Container
(
child:
const
TextField
(
minLines:
2
,
maxLines:
10
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
padding:
const
EdgeInsets
.
all
(
8.0
),
),
TestTextField
(),
],
)),
TestTextField
(),
],
),
),
floatingActionButton:
FloatingActionButton
(
onPressed:
_incrementCounter
,
tooltip:
'Increment'
,
...
...
@@ -123,22 +113,22 @@ class TestTextField extends StatefulWidget {
class
_TestTextFieldState
extends
State
<
TestTextField
>
{
FocusNode
_node
;
PersistentBottomSheetController
_controller
;
PersistentBottomSheetController
<
dynamic
>
_controller
;
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
_node
=
FocusNode
();
_node
.
addListener
(()
{
if
(
_node
.
hasFocus
)
{
print
(
'showBottomSheet'
);
_controller
=
Scaffold
.
of
(
context
)
.
showBottomSheet
<
dynamic
>((
BuildContext
ctx
)
=>
Container
(
width:
double
.
infinity
,
height:
36.0
,
color:
Colors
.
deepPurple
,
));
_controller
=
Scaffold
.
of
(
context
).
showBottomSheet
<
dynamic
>(
(
BuildContext
ctx
)
=>
Container
(
width:
double
.
infinity
,
height:
36.0
,
color:
Colors
.
deepPurple
,
),
);
}
else
{
if
(
_controller
!=
null
)
{
//Navigator.of(context).pop();
...
...
example/test/widget_test.dart
View file @
50022e7f
...
...
@@ -6,13 +6,12 @@
import
'package:flutter/material.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'../lib/main.dart'
;
import
'package:flutter_boost_example/main.dart'
;
void
main
(
)
{
testWidgets
(
'Verify Platform version'
,
(
WidgetTester
tester
)
async
{
// Build our app and trigger a frame.
await
tester
.
pumpWidget
(
new
MyApp
());
await
tester
.
pumpWidget
(
MyApp
());
// Verify that platform version is retrieved.
expect
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment