美文网首页
页面跳转并返回数据

页面跳转并返回数据

作者: 冰点雨 | 来源:发表于2019-12-22 14:54 被阅读0次

    异步请求和等待

    Dart中的异步请求和等待和ES6中的方法很像,直接使用async...await就可以实现。比如下面作了一个找小姐姐的方法,然后进行跳转,注意这时候是异步的。等待结果回来之后,我们再显示出来内容。具体代码如下:

     _navigateToXiaoJieJie(BuildContext context) async{ //async是启用异步方法
    
        final result = await Navigator.push(//等待
          context, 
          MaterialPageRoute(builder: (context)=> XiaoJieJie())
          );
    
          Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));
      }
    }
    

    SnackBar的使用
    SnackBar是用户操作后,显示提示信息的一个控件,类似Tost,会自动隐藏。SnackBar是以Scaffold的showSnackBar方法来进行显示的。

    Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));
    

    返回数据的方式
    返回数据其实是特别容易的,只要在返回时带第二个参数就可以了。

    Navigator.pop(context,'xxxx');  //xxx就是返回的参数
    
    14daa15e35f0599cb9d9f9ec300f8ec.png
    08e5c3aa182b8411e00c18dd6499559.png
    1a5e06731f97e397efe6e11a1875ebf.png

    全部代码

    import 'package:flutter/material.dart';
    
    
    
    void main(){
      runApp(MaterialApp(
          title:'数据传递案例',
          home:FirstPage()
      ));
    }
    
    class FirstPage extends StatelessWidget{
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(title:Text('找小姐姐要电话')),
            body:Center(
              child: GoButton(),
            )
        );
      }
    }
    
    //跳转的Button
    class GoButton extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return RaisedButton(
          child: Text('去找小姐姐'),
          onPressed: () {
            _navigateToXiaoJieJie(context);
          },
        );
      }
    
      
      _navigateToXiaoJieJie(BuildContext context) async {
        final result = await Navigator.push(//等待
            context,
            MaterialPageRoute(builder: (context) => XiaoJieJie())
        );
        
        Scaffold.of(context).showSnackBar(SnackBar(content: Text('$result')));
      }
    }
    
    
    
    
    
    class XiaoJieJie extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
            appBar: AppBar(
              title:Text('我是小姐姐'),
            ),
            body:Center(
              child: Column(
                children: <Widget>[
                  RaisedButton(
                    child: Text('大长腿小姐姐'),
                    onPressed: (){
                      Navigator.pop(context,'大长腿:1511008888');
                    },
                  ) ,
                  RaisedButton(
                    child: Text('小蛮腰小姐姐'),
                    onPressed: (){
                      Navigator.pop(context,'大长腿:1511009999');
                    },
                  ) ,
    
                ],
              ),
            )
        );
      }
    }
    

    相关文章

      网友评论

          本文标题:页面跳转并返回数据

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