zoukankan      html  css  js  c++  java
  • Flutter页面跳转返回数据

    Dart中的异步请求和等待和ES6中的方法很像,直接使用async...await就可以实现。

    核心代码:

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

    示例:

    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: RouteButton(),
            )
        );
      }
    }
    
    //跳转的Button
    class RouteButton extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return RaisedButton(
          onPressed:(){
            _navigateToAddress(context);
          },
          child: Text('选择地址'),
        );
      }
    
      _navigateToAddress(BuildContext context) async{ //async是启用异步方法
    
        final result = await Navigator.push(//等待
            context,
            MaterialPageRoute(builder: (context)=> Address())
        );
    
        Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));
      }
    }
    
    class Address extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar:AppBar(
              title:Text('地址列表')
          ),
          body:Center(
              child:Column(
                children: <Widget>[
                  RaisedButton(
                    child: Text('地址一'),
                    onPressed: (){
                      Navigator.pop(context,'地址一:北京');
                    },
                  ) ,
                  RaisedButton(
                    child: Text('地址二'),
                    onPressed: (){
                      Navigator.pop(context,'地址二:上海');
                    },
                  ) ,
                ],
              )
          ) ,
        );
      }
    }
  • 相关阅读:
    Fedora 14 安装完后的设置 添加源 更新软件
    visual studio NuGet 常用包管理命令
    ubuntu通过cifs-utils访问Windows共享目录
    C# 数据库写入Sql Bulk索引损坏异常问题System.InvalidOperationException: DataTable internal index is corrupted: '4'
    C# IEnumerable to List 的转换
    python 端口扫描
    ubuntu 关闭 phpmyadmin
    zendframework 初始化配置
    zend-form笔记
    DirectX 图形流水线
  • 原文地址:https://www.cnblogs.com/loaderman/p/11250889.html
Copyright © 2011-2022 走看看