当前位置:首页 > 技术分析 > 正文内容

flutter软件开发笔记15-路由与导航

ruisui8821小时前技术分析8

在 Flutter 3 中,路由(Route)和导航(Navigation) 是管理页面跳转和页面堆栈的核心机制。它们允许开发者构建多页面应用,并在不同页面之间进行跳转、传参和状态管理。

一、路由(Route)和导航(Navigation)

1. 路由(Route)

o 表示应用中的一个“页面”或“屏幕”,本质是一个 Widget(如 MaterialPageRoute 或 CupertinoPageRoute)。

o 每个路由对应一个页面,Flutter 通过路由堆栈(后进先出)管理页面跳转。

2. 导航(Navigation)

o 通过 Navigator 类操作路由堆栈,实现页面的跳转(如打开新页面、返回上一页)。

二、路由与导航的核心用途

1. 页面跳转管理

o 实现页面之间的正向跳转(如从主页跳转到详情页)和逆向返回(如从详情页返回主页)。

2. 传递数据

o 在页面跳转时传递参数(如用户ID、配置信息)。

3. 页面堆栈控制

o 管理路由堆栈,避免内存泄漏(如清除无用页面)。

4. 动态路由

o 根据条件动态加载不同页面(如权限验证、AB测试)。

5. 动画效果

o 自定义页面切换的过渡动画(如渐隐、滑动、缩放)。

三 程序界面

四 代码

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Routing Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const FirstPage(),
    );
  }
}

class FirstPage extends StatelessWidget {
  const FirstPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('First Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 导航到第二个页面
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => const SecondPage()),
            );
          },
          child: const Text('Go to Second Page'),
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  const SecondPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Second Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 返回上一个页面
            Navigator.pop(context);
          },
          child: const Text('Go back to First Page'),
        ),
      ),
    );
  }
}    

五 代码解释

  1. main 函数:这是应用的入口函数,调用 runApp 函数来启动应用,并传入 MyApp 组件。
  2. MyApp 组件:这是应用的根组件,使用 MaterialApp 来构建应用的基本结构。home 属性指定了应用启动时显示的第一个页面,这里是 FirstPage。
  3. FirstPage 组件:这是第一个页面,包含一个按钮。点击按钮时,使用 Navigator.push 方法将 SecondPage 路由压入导航栈,从而跳转到第二个页面。
  4. SecondPage 组件:这是第二个页面,同样包含一个按钮。点击按钮时,使用 Navigator.pop 方法将当前路由从导航栈中弹出,从而返回上一个页面。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3992.html

分享给朋友:

“flutter软件开发笔记15-路由与导航” 的相关文章

html5+css3做的响应式企业网站前端源码

大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1)。送给大家哦,获取方式在本文末尾。首页banner幻灯片切换特效(图2)首页布局简约合理(图3)关于我们页面(图4)商品列表(图5)商品详情(图6)服务介绍(图7)新闻列表(图8)联系我们(图9)源码完整,需要的朋友...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...

史上最全 vue-router 讲解 !!!

前端路由 前端路由是后来发展到SPA(单页应用)时才出现的概念。 SPA 就是一个WEB项目只有一个 HTML 页面,一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转。 前端路由在SPA项目中是必不可少的,页面的跳转、刷新都与路由有关,通过不同的url显示相应的页面。 优点:前...

vue开发微信小程序 - 登录组件

移动端登录功能抽象为通用组件,满足:不同移动端应用中一键登录功能复用支持多种登录:微信登录、H5、QQ登录登录组件使用//引用登录组件 import login from "../components/user/login.vue" export default { compone...

原生微信小程序打包成安卓/IOS应用!#小程序开发

原生微信小程序打包成公。好消息,微信小程序可以直接打包成APP了你们知道吗?微信团队近日开发了一个多端开发平台。多端据文档描述,多端开发框架是支持使用小程序原生语法开发移动端应用的框架。开发者可以一次编码分别编译为小程序安卓以及iOS应用,实现多端开发。我们进入多端框架开发的文档,来看看怎么使用微信...

一篇文章搞懂同步与异步、阻塞与非阻塞

要想掌握好Java NIO需要涉及了解同步与异步、阻塞与非阻塞,本文通过相关例子让你深入理解其本质@mikechen阻塞阻塞与非阻塞是对同一个线程来说的,在某个时刻,线程要么处于阻塞,要么处于非阻塞。阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。举一个例子:当一...