美文网首页flutter
flutter页面间跳转和销毁

flutter页面间跳转和销毁

作者: 习惯了_就好 | 来源:发表于2018-11-19 22:19 被阅读702次

flutter页面间的跳转有两种方式,一种动态构建路由的方式,一种提前命名路由的方式。

构建路由方式

push方法:直接跳转到下个页面,可以传递参数

Navigator.of(context).push(

    new MaterialPageRoute(builder: (BuildContext context) {

//TextWdigetPage要跳转的页面

//title要传递的参数

      return TextWdigetPage(title: "传递的参数");

    }))

),

或者

Navigator.push(context,

    new MaterialPageRoute(builder: (BuildContext context) {

      return TextWdigetPage(title: "传递的参数");

    })

)

pushAndRemoveUntil方式:跳转到下个页面,并且销毁当前页面

//第一个小菜理解为上下文环境,

// 第二个参数为静态注册的对应的页面名称,

// 第三个参数为跳转后的操作,route == null 为销毁当前页面

Navigator.pushAndRemoveUntil(context,

    new MaterialPageRoute(builder: (BuildContext context) {

      return TextWdigetPage(title: "传递的参数");

    }), (route) => route == null

)

提前命名路由

不能传递参数,只能在mian.dart里面写死要跳转的路由协议

@override

Widget build(BuildContext context) {

  return MaterialApp(

    title: "flutter学习",

    home: Scaffold(

      appBar: AppBar(title: Text("flutter学习"),),

      body: ListView.builder(

          itemCount: list.length,

          itemBuilder: (context, position) {

            return HomeListItem(position, list[position], (index) =>

                Navigator.push(context,

                    new MaterialPageRoute(builder: (BuildContext context) {

                      return pageList[index];

                    }))

            );

          }),

    ),

    //不能传递参数,必须在main里面注册

    routes: {

      "listview_builder_page": (BuildContext context) =>

      new ListView_Builder_Page(),

      "listview_separated_page": (BuildContext context) =>

      new ListView_Separated_Page(),

    },

  );

}

调用时可以用以下方式:

Navigator.pushNamed(context, "listview_builder_page")

或者

Navigator.pushNamedAndRemoveUntil(

    context, "listview_builder_page", (router) => router == null)

),

页面的销毁:

//构建路由

//一个参数,为上下文环境,销毁当前页面

Navigator.pop(context);

//一个参数,第一个为上下文环境,第二个为要携带的参数,销毁当前页面

Navigator.pop(context, "携带参数");

//命名路由

Navigator.popAndPushNamed(context, 'listview_builder_page');

接收路由返回的参数:

//构建路由

Navigator.push(context,

    new MaterialPageRoute(builder: (BuildContext context) {

      return TextWdigetPage(title: "传递的参数");

    })

).then((Object result) {

      print("返回值:${result.toString()}");

})

Navigator.pushAndRemoveUntil(context,

    new MaterialPageRoute(builder: (BuildContext context) {

      return TextWdigetPage(title: "传递的参数");

    }), (route) => route == null

).then((Object result) {

     print("返回值:${result.toString()}");

})

命名路由

Navigator.pushNamed(context, "listview_builder_page").then((Object result) {

       print("返回值:${result.toString()}");

})

练习demo,链接https://gitee.com/xgljh/Flutter

相关文章

  • flutter页面间跳转和销毁

    flutter页面间的跳转有两种方式,一种动态构建路由的方式,一种提前命名路由的方式。 构建路由方式 push方法...

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

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

  • Flutter 中的Intents

    Flutter 中的 Intents 可以看看这篇 Flutter 页面跳转,携带参数的页面跳转的使用和说明点击跳...

  • Navigator的正确打开方式

    引言 在使用Flutter进行页面间跳转时,Flutter官方给的建议是使用Navigator。Navigator...

  • flutter 数据传递与通信

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

  • Flutter混合项目实战

    一、在Native页面跳转Flutter页面 Adding a Flutter screen to an iOS ...

  • Flutter 路由

    flutter 路由 页面跳转 在flutter中界面就是组件Flutter 中的路由通俗的讲就是页面跳转。在 F...

  • iOS原生和Flutter交互

    一、Flutter调用原生方法 这里我是原生跳转到flutter页面,然后通过点击flutter页面的按钮和原生交...

  • Flutter - 页面间跳转操作

    切换到一个新的界面并且能跳回来 大多数App都包含多个界面。比如数据列表页和详细页。Android中的页面可以是A...

  • Flutter 返回指定页面

    Flutter 返回指定页面 并销毁中间路由

网友评论

    本文标题:flutter页面间跳转和销毁

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