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學習中,若有什麼不妥的地方還望各位大佬斧正!!!

相關文章
相關標籤/搜索