IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter路由跳转(页面跳转) -> 正文阅读

[移动开发]Flutter路由跳转(页面跳转)

1. 指定页面名称跳转Navigator.of(context).push(MaterialPageRoute()

class TextPage extends StatelessWidget {
  const TextPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) => MaterialApp(
          home: Scaffold(
        body: Center(
          child: TextButton(
            child: const Text(';跳转'),
            onPressed: () {
              Navigator.of(context).push(MaterialPageRoute(builder: (context) {				
              	//返回要跳转的目标页面
                return _WillPopApp();
              }));
            },
          ),
        ),
      ));
}

2.指定路由名称跳转。

  • 首先要注册路由名称:
//运行
  runApp(MaterialApp(
    routes: {
      //   //注册路由表
       "cartPage": (context) => const CartWidget(),
      'home': (context) => const HomeWidget(),
    },
  • 通过路由名称跳转
 ElevatedButton(
                  child: const Text('命名的方式跳转'),
                  onPressed: () {
                    //路由命名的方式跳转到指定以页面
                    Navigator.pushNamed(context, "product",
                            //传递过去的数据
                            arguments: '我是传递的数据')
                        //返回的数据
                        .then((value) {
                      setState(() {
                        cartResult = value.toString();
                        print('返回的数据=$value');
                      });
                    });
                  },
                ),

3.通过onGenerateRoute方法实现页面拦截

比如在跳转个人中心或者结算订单的场景需要用户登录后才可执行后续操作onGenerateRoute方法在使用路由名称跳转的时候如果你使用的目标名称没有注册就会调用此方法

示例:onGenerateRoute方法判断

//如果使用命名的方式跳转,如果跳转的路由名称没有注册就会调用这个方法
    //可以利用这个方式拦截页面的跳转,比如说验证是否已登录
    onGenerateRoute: (RouteSettings settings) {
      return MaterialPageRoute(builder: (context) {
        if (isLogin) {
          switch (settings.name) {
            case "cartPage":
              return const CartWidget();
            case "product":
              return const ProductWidget(productName: '我是通过命名传递过来的');
            default:
              return const HomeWidget();
          }
        } else {
          return const LoginWidget();
        }
      });
    },

实现跳转:

ElevatedButton(
                  child: const Text('命名的方式跳转'),
                  onPressed: () {
                    //路由命名的方式跳转到指定以页面
                    Navigator.pushNamed(context, "cartPage",
                            //传递过去的数据
                            arguments: '我是传递的数据')
                        //返回的数据
                        .then((value) {
                      setState(() {
                        cartResult = value.toString();
                        print('返回的数据=$value');
                      });
                    });
                  },
                ),

退出页面

IconButton(
      icon: const Icon(Icons.arrow_back),
      onPressed: () {
                Navigator.pop(context, '我返回数据给你了');
         },
      ),
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:43:02  更:2022-02-22 20:44:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 15:54:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码