书接上回!!!查看上回api
上回咱们说到Flutter
内部跳转而且完成传值此次来个Flutter
跳转Native
而且完成传值bash
Flutter
TO Native
上面已经说到第二个Flutter
页面了,咱们继续从这里开始app
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: Text("跳转原生界面"),
onPressed: () {
// 打开原生页面
<!--这里 open 打开的东西其实就是咱们原生里面 PlatformRouterImp 类里面的 open 方法,
后面的参数就是咱们 PlatformRouterImp 里面open里面的 url 经过这个 url 咱们能够判断打开咱们相应的界面,
一、urlParams 传人页面的参数; 如有特殊逻辑,能够经过这个参数设置回调的id
二、exts 额外参数
三、completion 打开页面的即时回调,页面一旦打开即回调-->
FlutterBoost.singleton.open("sample://LoginPage",
urlParams: {"userName": "ryan", "password": "123456"},
exts:null(也能够不写这个参数名,他是可选的));
},
),
),
),
);
}
}
复制代码
原生里面咱们在 PlatformRouterImp
这个类里面判断一下ide
func open(_ url: String, urlParams: [AnyHashable : Any], exts: [AnyHashable : Any], completion: @escaping (Bool) -> Void) {
var animated = false;
if exts["animated"] != nil{
animated = exts["animated"] as! Bool;
}
if url.contains("sample://LoginPage") {
let vc = JTOrderDetailViewController()
vc.hidesBottomBarWhenPushed = true
vc.flutterdata = urlParams
topVC?.navigationController?.pushViewController(vc, animated: animated);
} else {
let vc = FLBFlutterViewContainer.init()
vc.setName(url, params: urlParams)
vc.navigation.bar.isHidden = true
vc.hidesBottomBarWhenPushed = true
topVC?.navigationController!.pushViewController(vc, animated: animated);
}
completion(true);
}
复制代码
这样就打开咱们原生界面了,而且传过来的值也在urlParams
这里面,额外参数咱们没有作任何参数传递。post
最后一步咱们原生返回Flutter
页面,这里咱们须要本身写一个通道了。它里面没有,直接上代码 咱们在原生里面监听返回按钮的点击事件而后经过FlutterBoostPlugin.sharedInstance().sendEvent
这样把东西传过去学习
navigation.bar.backBarButtonItem?.didBack = {
self.navigationController?.popViewController(animated: true)
FlutterBoostPlugin.sharedInstance().sendEvent("NativeDetailPageCallback", arguments: ["name":"detailPage","number":"1000"]);
}
复制代码
咱们在Dart
里面ui
// 原生界面返回传值获取
FlutterBoost.singleton.channel.addEventListener(
"NativeDetailPageCallback",
(name, arguments) {
return handleMsg(name, arguments);
},
复制代码
这里咱们就能监听到原生传过来的值了。截止到如今基本上完成了从原生到Flutter
, 而后Flutter
到Flutter
,Flutter
到原生,之间的全部联系了。this
我是初学者,这里是记录一下本身在学习Flutter_boost
时候的学习笔记吧,和你们一块儿分享一下。若是不妥的地方还请路过的大佬不吝赐教!!!!!!url