美文网首页
Flutter 界面传值

Flutter 界面传值

作者: 我不是小白是真白 | 来源:发表于2019-04-19 16:35 被阅读0次

    从前往后传值

    假设从 A 页面跳到 B 页面, 将信息从A 传到B,

    通过Navigation.push

    B中有个name字段,

     const TwoWidget({Key key, this.name}) : super(key: key);
    

    声明的时候将信息 添加进去,
    通过

     Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
                  TwoWidget widget = TwoWidget(name: "祝化林",);
                  return widget;
                }));
    

    将信息传到B界面

    从后往前传值

    静态路由从后往前传值

    静态路由不能从前向后传值,只能从前往后,需要两步,首先注册,在routes中注册路由,
    假设,从A 跳转到B,从B 返回A的时候进行传值,

     MaterialApp(
          title: 'Flutter Demo',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: new MyHomePage(title: 'Flutter实例'),
          routes: <String, WidgetBuilder> {
            // 这里可以定义静态路由,不能传递参数
            '/router/second': (_) => new SecondPage(),
            '/router/home': (_) => new RouterHomePage(),
          },
        );
    

    action 事件中调用路由, 传的值在 then 后面,是个 Future,这边通过一个弹框,将结果显示出来,

    Navigator.pushNamed(context, 'twoWidget').then((name) {
                  show(context, name);
                });
    

    在B中pop回去的时候, pop 后面即为传的值.

    Navigator.of(context).pop('***');
    

    动态路由从后往前传值

    场景同静态路由一样,
    在从A跳转到B的时候,使用 then,接收B中传来的值,B中传值方法不变

    Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
                  TwoWidget widget = TwoWidget();
                  return widget;
                })).then((name){
                  show(context, name);
                });
    

    show 为显示一个弹框

    show(BuildContext context,String name){
        showDialog(
          context: context,
          builder: (BuildContext context){
            return new SimpleDialog(
              title: Text(name),
              children: <Widget>[
                new SimpleDialogOption(
                  child: new Text('确定'),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ],
            );
          },
        );
      }
    
    

    相关文章

      网友评论

          本文标题:Flutter 界面传值

          本文链接:https://www.haomeiwen.com/subject/iaqzjqtx.html