书接上回!!!查看上回bash
上回咱们说到原生跳转到Flutter
这回咱们说返回而且传值回去app
Flutter
返回Native
并传值appBar: AppBar(
title: const Text('First Route1'),
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
// 返回到原生界面传值
Map<String, dynamic> tmp = {
"name": "flutterName",
"age": "GooleAge"
};
try {
<!--这里的 flutterCallBack 是咱们在页面上要相似 key 值的东西 tmp 就不解释了,上面那个值-->
FlutterBoost.singleton.channel
.sendEvent("flutterCallBack", tmp);
} catch (e) {
print(e);
}
<!--这里的 backNative 是咱们返回的时候须要监控的地方在 PlatformRouterImp 里面,由于页面多了我有时候还要作一些其余操做-->
FlutterBoost.singleton.close('backNative');
}),
),
复制代码
原生里面咱们接受方式ide
// 获取Dart传过来的值
_ = FlutterBoostPlugin.sharedInstance() .addEventListener({ (name, parmas) in
DLog("====================\(parmas!["name"] ?? "没有值")")
<!--这里的值就是Dart里面的那个必定要同样-->
}, forName: "flutterCallBack")
复制代码
伪装一个分割线-------------------------------------------------------------- 第二种post
这个只须要在Dart
中作操做学习
这里咱们须要再mian
里面再写一个ui
'second': (String pageName, Map<String, dynamic> params, String _) =>
SecondRouteWidget(params),
复制代码
我FlutterA页面写了一个Button
来点击而且发送参数this
RaisedButton(
child: const Text('Open second route'),
onPressed: () {
print('open second page!');
// 打开flutter页面
FlutterBoost.singleton.open('second',urlParams: {"name":"flutterPage1 传递过来的值是这样的"}).then((Map<dynamic, dynamic> value) {
setState(() {
secondTwoPageString = value["result"];
});
});
},
),
复制代码
这里第二个路由咱们第二个页面接受一个参数,全部须要再第二页面初始化一个构造器url
class SecondRouteWidget extends StatefulWidget {
final Map<dynamic, dynamic> params;
SecondRouteWidget(this.params);
@override
_SecondRouteWidgetState createState() => _SecondRouteWidgetState();
}
<!--而后接受一下-->
class _SecondRouteWidgetState extends State<SecondRouteWidget> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('secondPage'),
),
body: Center(
child: Column(
child: Text(
<!--看一下传过来的值-->
widget.params["name"],
)
),
),
);
}
}
复制代码
这样Flutter跳转Flutter
就完成了剩下就是跳转回去,而且传值 一样的仍是在second
页面写一个按钮跳转回去spa
class SecondRouteWidget extends StatefulWidget {
final Map<dynamic, dynamic> params;
SecondRouteWidget(this.params);
@override
_SecondRouteWidgetState createState() => _SecondRouteWidgetState();
}
<!--而后接受一下-->
class _SecondRouteWidgetState extends State<SecondRouteWidget> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('secondPage'),
),
body: Center(
child: Column(
child: RaisedButton(
child: const Text('返回上一个Flutter页面'),
onPressed: () {
// Navigate back to first route when tapped.(返回Flutter页面)
final BoostContainerSettings settings =
BoostContainer.of(context).settings;
// 传值回到上个flutter页面
FlutterBoost.singleton.close(
settings.uniqueId,
result: <String, dynamic>{'result': 'data from second'},
);
},
),
),
),
);
}
}
复制代码
在FlutterA
页面跳转的那个地方咱们其实已经监听到返回了,而且还有值就是code
RaisedButton(
child: const Text('Open second route'),
onPressed: () {
print('open second page!');
// 打开flutter页面
FlutterBoost.singleton.open('second',urlParams: {"name":"flutterPage1 传递过来的值是这样的"}).
<!--就是这里,返回值就会返回在这个Value里面-->
then((Map<dynamic, dynamic> value) {
setState(() {
secondTwoPageString = value["result"];
});
});
},
),
复制代码
这样咱们就完成第二步Flutter
内部的跳转和传值下面来第三步Flutter
到原生传值返回传值Flutter跳转原生,原生返回传值我写在下一篇吧!
各位大佬:小弟正在Flutter学习中,若有什么不妥的地方还望各位大佬斧正!!!