美文网首页
flutter04: 路由跳转

flutter04: 路由跳转

作者: 蜗牛的学习方法 | 来源:发表于2019-06-14 08:58 被阅读0次

路由分两种:静态路由和动态路由

Flutter里面有路由支持所有的路由场景,push、pop页面,页面间的参数传递等等。flutter里面的路由可以分成两种,一种是直接注册,不能传递参数。另一种要自己构造实例,可以传递参数。我们暂时把它们规为静态路由和动态路由。
1、静态路由

//声明
import 'package:flutter_app/pages1/detail.dart';
return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(title: 'Flutter实例'),
      routes: <String, WidgetBuilder> {
        // 这里可以定义静态路由,不能传递参数
        '/detail': (_) => new Detail(),
      },
    );

//不带返回值的
Navigator.of(context).pushNamed('/detail');
//返回的参数
Navigator.of(context).pop('这个是要返回给上一个页面的数据');
//带返回值的
Navigator.of(context).pushNamed('/detail').then((value) {
  // dialog显示返回值
  print(value);//value=这个是要返回给上一个页面的数据
});

2、动态路由

//首先要引入该类
import 'package:flutter_app/pages1/detail.dart';
//传  页面名字为home_page.dart 类名为HomePage
Navigator.of(context).push(new MaterialPageRoute(builder: (_) {
    return new Detail(
        title:'此处为参数',
        name:'此处为名字参数'
    );
}));
//收
String title;
String name;
Detail({Key key,this.title,this.name}) : super(key: key);

appBar: AppBar(
  title: Text('详情$title'),
),

点击跳转的页面


HomePage.png

详情页面(无状态组件的获取方式)


Detail.png
详情页面(有状态组件获取方式)
image.png
image.png

将参数传给命名路由:

//定义路由参数
final routes = {
    '/index_detail': (context,{arguments}) => new IndexDetail(arguments:arguments),
  };
//命名路由
onGenerateRoute: (RouteSettings settings) {
        //统一处理  任意路由进行传值
        final String name = settings.name;
        final Function pageContentBuilder = this.routes[name];
        if (pageContentBuilder != null) {
          if (settings.arguments != null) {
            final Route route = MaterialPageRoute(
                builder: (context) =>
                    pageContentBuilder(context, arguments: settings.arguments));
            return route;
          } else {
            final Route route = MaterialPageRoute(
                builder: (context) => pageContentBuilder(context));
            return route;
          }
        }
      },
//跳转
Navigator.pushNamed(context,'/index_detail',arguments:{'id':'123'});
//返回到顶部根目录
Navigator.of(context).pushAndRemoveUntil(
              MaterialPageRoute(builder: (context)=>BottomNavigationWidget(index: 2,)), (Route)=>Route==null);
image.png

相关文章

  • flutter04: 路由跳转

    路由分两种:静态路由和动态路由 Flutter里面有路由支持所有的路由场景,push、pop页面,页面间的参数传递...

  • 路由跳转(非命名路由)

    单纯跳转: 路由传值跳转: 路由传值返回跳转:

  • Vue 动态设置路由Meta title 名称

    路由配置 路由跳转 或路由配置 路由跳转 都可以,看着用。随堂笔记防遗忘!

  • flutter笔记一

    路由跳转 创建新路由

  • 路由跳转的总结

    路由跳转 方式1返回上一级或指定的路由 方式2使用路由跳转

  • angualr(二) 路由之angualr-router

    创建项目 路由的基本使用 路由对象图示 路由基本配置 路由通配符配置 HTML里面跳转链接 在js里面跳转路由 路...

  • react路由基础配置

    1、根据路径加载对应页面内容2、路由跳转3、路由懒加载4、嵌套路由(子路由)5、路由管理6、路由跳转权限校验 1、...

  • nuxt基础

    路由跳转 动态路由 对应会自动生成如下路由 路由参数校验 返回布尔值,false则跳转到404页面 嵌套路由

  • 路由跳转(可能的面试题)

    路由如何取参数? 如何跳转路由?

  • 路由嵌套

    子路由的path不能带 /, 否则不跳转, path: 'chapter' 跳转的路由地址要把父路由带上 "/co...

网友评论

      本文标题:flutter04: 路由跳转

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