flutter混合(iOS)开发第一步使用(Flutter_Boost)完成页面之间的跳转传值(二)

书接上回!!!查看上回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

FlutterA TO FlutterB 跳转和传值

这个只须要在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学习中,若有什么不妥的地方还望各位大佬斧正!!!

相关文章
相关标签/搜索