Flutter(五)--Navigator&页面传值

作者: Henry________ | 来源:发表于2019-04-28 17:55 被阅读12次

和iOS的NavigationController原理相同,都是使用堆栈的原理来管理页面。

在组件里可以使用Navigator.of(content)来获得父组件里的导航器

有两种方式来实现路由跳转

1,构建路由跳转

该builder方法中可以携带参数

push、pop都可以携带参数,而所携带的参数都是Future

  • push模式

Widget build(BuildContext context) {
      return Container(
        child: RaisedButton(
          child: Text('push'),
          onPressed: () => Navigator.of(context).push(MaterialPageRoute(
              builder: (content) {
            return deee(str: 'demo');
          },
      )),
    ),
  );
}
    

class deee extends StatelessWidget {
  final Sting str;
  
  //带参数的组件初始化方式
  const _ListTodoDetail({Key key,@required this.str}) : super(key: key);
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          title:Text('${this.str}'),
        ),
    );
  }
}
  • pop模式

  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
              child: Text('push'),
//pop回来的值类型为Future,必须使用await来获取,而await必须在async异步线程中使用
              onPressed: () async {
                final va = await Navigator.of(context).push(MaterialPageRoute(
                  builder: (context) => _PopPage()
                ));
                print('$va');
            }),));
  }
}

Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          title:Text('pop'),
        ),
      body: Center(
        child: Center(
          child: RaisedButton(
              child: Text('pop'),
              onPressed: () => Navigator.of(context).pop('we are coming'),
            ),)));
  }
  

2,命名路由跳转


//在app最顶端的组件MaterialApp中设置,一般做一些通用跳转,不能传一些动态的参数
return MaterialApp(
      title: 'Demo',
      routes: {
        '/back': (context) => Navigator.of(context).pop(),
      }
)
//任意位置调用:
Navigator.pushNamed(context, '/back');
    

相关文章

  • Flutter(五)--Navigator&页面传值

    和iOS的NavigationController原理相同,都是使用堆栈的原理来管理页面。 在组件里可以使用Nav...

  • Flutter--Route和Navigator(三)

    主要实现功能,返回页面传值 Flutter页面返回传值,类似于activity的startActivityForR...

  • 原生IOS与Flutter的交互

    1.IOS原生跳转flutter页面时的传值。在flutter页面初始化之前注册通知,在flutter页面初始化里...

  • flutter 数据传递与通信

    flutter 数据传递与通信 1.页面传值(页面间跳转) class GoodDetailPage extend...

  • Flutter页面/组件传值

    父子组件之间的传值 父组件 页面导航打开新页面和返回新页面 导航之间的传值 返回页面传值 创建一个TipRoute...

  • Flutter_嵌套APP

    flutter 代码块 swift 传值 原生 to flutter 传值 flutte to 原生 写在后面...

  • Flutter 混合开发(Android)路由开发

    Flutter交互 原生跳Flutter页面通过路由传参 原生跳到Flutter页面,由于Flutter没有方法可...

  • Flutter之路由详解

    本文主要包含两个方面:【路由导航】和【路由传值】 路由传值 Flutter中管理多个页面时有两个核心概念和类:Ro...

  • Flutter - 页面跳转(路由)、传值

    Flutter 中页面跳转通过 Navigator 和 Route 来实现。 一、页面跳转 1,常规路由页面跳转...

  • iOS 传值

    页面传值 NSNotification Delegate Block 单例 一、 页面传值 最简单直接的传值方法 ...

网友评论

    本文标题:Flutter(五)--Navigator&页面传值

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