首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter路由管理和页面参数传递(获取&返回)

所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。...fullscreenDialog表示新路由页面是否是一个全屏模态对话框,在iOS中,如果fullscreenDialog为true,新页面将会从屏幕底部滑入(而不是水平方向)。...命名路由 所谓命名路由(Named Route)即给路由起一个名字,然后可以通过路由名字直接打开新路由。这为路由管理带来了一种直观、简单方式。...Navigator.of(context).push(route); } push方法使用 我们可以将参数放在 SecondScreen 构造函数中,也可以放在构造 MaterialPageRoute...之前通过在 WidgetsApp 注册routes 方式默认生成 PageRoute 类型MaterialPageRoute

4.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

Flutter开发(15)- 路由导航

但是Route是一个抽象类,所以它是不能实例化 在上面有一段注释,让我们查看MaterialPageRoute来使用 /// See [MaterialPageRoute] for a route that...并不是Route直接子类: MaterialPageRoute在不同平台有不同表现 对Android平台,打开一个页面会从屏幕底部滑动到屏幕顶部,关闭页面时从顶部滑动到底部消失 对iOS平台,打开一个页面会从屏幕右侧滑动到屏幕左侧...基本跳转 我们可以通过创建一个新Route,使用Navigator来导航到一个新页面,但是如果在应用中很多地方都需要导航到同一个页面(比如在开发中,首页、推荐、分类页都可能会跳到详情页),那么就会存在很多重复代码...在这种情况下,我们可以使用命名路由(named route命名路由是将名字和路由映射关系,在一个地方进行统一管理 有了命名路由,我们可以通过Navigator.pushNamed() 方法来跳转到新页面...,类型为Map 修改MaterialApp中代码: return MaterialApp( title: 'Flutter Demo', theme: ThemeData

95420

从零开始Flutter之旅: Navigator

这次我们接着来了解一下路由导航Navigator相关信息。 Flutter中路由管理与原生开发类似,都会维护一个路由栈,通过push入栈打开一个新页面,然后再通过pop出栈关闭老页面。...用法很简单通过push传递一个Route。这里对应MaterialPageRoute。它会提供一个builder方法,我们直接在builder中返回想要跳转页面实例即可。... route = _history.last; assert(route....ModalRoute.of()内部运用是context.dependOnInheritedWidgetOfExactType() 是不是有点眼熟?...命名路由 命名路由,顾名思义通过提前注册好名称来跳转到对应页面。 首页我们需要注册一个路由表,约定好名称与页面的一一对应。

72610

flutter路由

; Navigator 方法 作用 pushNamed 按路由名字路由入栈 pushReplacementNamed 按路由名字替换当前路由栈 popAndPushNamed 将当前路线导航器中弹出,...并在其中推入已命名路由位置 pushNamedAndRemoveUntil 按路由名称将具有给定名称路由推入导航器,然后删除所有 push 直接路由入栈 pushReplacement 替换当前路由栈...pushAndRemoveUntil 将具有给定名称路由推入导航器,然后删除所有 replace 用新路由替换导航器上路由 replaceRouteBelow 用新路由替换导航器上路由。...,然后[Route.dispose]要替换路线是给定“ anchorRoute”下方路线。...,如果为空就不做任何操作; 路由命名 我们想执行跟name有关Navigator方法就必须先给路由命名,比如pushNamed方法, 注册路由在MaterialApproutes属性,它定义为:

1.7K20

Flutter 构建完整应用手册-导航器 顶

导航到新屏幕并返回 大多数应用程序包含几个用于显示不同类型信息屏幕 例如,我们可能有一个显示产品屏幕。 然后,我们用户可以在新屏幕上点击产品以获取更多信息。...push方法会将Route添加到由导航器管理路由堆栈中! push方法需要Route,但Route从哪里来? 我们可以创建自己,或者使用MaterialPageRoute开箱即用。...pop方法将从由导航器管理路线堆栈中移除当前Route。...路线 定义一个Todo类 创建Todos列表 创建一个可以显示关于待办事项信息详情屏幕 导航并将数据传递到详情屏幕 1.定义一个Todo类 首先,我们需要一种简单方法来表示Todos。...通常,您可以创建可重用部件,而不是重复代码,但对于此示例,我们将复制代码以进行演示。

4.9K10

第132期:flutter导航和路由

: Text(song.name), 由于Navigator保存了一个Route对象堆栈(表示历史堆栈),所以push()方法也使用Route对象作为参数。...MaterialPageRoute对象是Route子类,用于指定Material Design过渡动画。...命名路由 对于有些具有简单导航和深度链接需求应用程序,我们可以使用Navigator进行导航,使用MaterialApp对象routes属性对路由进行配置: @override Widget build...命名路由局限 尽管命名路由可以处理深层链接,但是他们表现总是一致,没办法做到自定义。当应用平台接收到一个新深层链接,不论用户此时在哪个位置,Flutter都会将新路线推送到导航器上。...如果我们使用是路由包,则页面支持路由始终是可深度链接,而无页面的路由则不是。 当从导航器中删除页面支持路由时,它之后所有无页面路由也将被删除。

2K30

Flutter | 路由管理

点击进行跳转 FlatButton( child: Text("点击跳转"), textColor: Colors.red, onPressed: () { //导航到新路由...; })); }, ) 复制代码 效果: MaterialPageRoute MaterialPageRoute 是 Material 组件库提供组件,他可以针对不同平台,...settings, this.maintainState = true, bool fullscreenDialog = false, }) builder 是 WidgetBuilder 类型回调函数...push(route); } 复制代码 将给定路由入栈(打开页面),返回 future 对象,用于接收该路由出栈是返回数据。...I/flutter (23778): 路由返回值 我是返回值 复制代码 需要注意是 ​ 1,参数是通过构造方法传入 ​ 2,如果点击左上角,或者返回按钮进行返回,则页面返回值为 null 命名路由

82820

再谈路由与导航,详谈Flutter是如何实现页面切换

Navigator 则会维护一个路由栈管理RouteRoute打开即入栈,Route关闭即出栈,还可以直接替换栈内某一个Route。...要导航到一个新页面,我们需要创建一个 MaterialPageRoute 实例,调用 Navigator.push 方法将新页面压到堆栈顶部。...也许你会想到,我们可以约定使用字符串常量去定义、使用路由,但我们无法避免通过接口数据下发错误路由标识符场景。面对这种情况,无论是直接报错或是不响应错误路由,都不是一个用户体验良好解决办法。...对于命名路由,我们为了能够响应错误路由标识符,还需要一并注册 UnknownRoute 。...可以看到,关于路由导航,Flutter综合了Android、iOS和React特点,简洁而不失强大。 而在中大型应用中,我们通常会使用命名路由来管理页面间切换。

2.7K20

Flutter 页面交互 | 路由跳转方式、常用API、发送接收数据、可能发生问题与知识点拓展

修改ContentPage (封装pushData()方法, 用于导航以及接收数据), String results; //封装一个函数 处理路由返回数据 // 接收数据是异步,需要加...async关键字; // 需要接收数据,需要加 await关键字; // 需要准备一个数据类型变量,来承载; // 指定函数返回类型String,Alt+enter 改成 Future<...; // push()要求传入一个Route对象,一般用 MaterialPageRoute类 var datas = await Navigator.of(context).push(...可以写main函数,也可以不写; 建议只在首页写main,其他页面不要写,便于查找和维护; 命名路由 路径名称 正确性(定义与使用要相符合)、 传参(参数类型一致性问题; 1....需要接收数据,需要加 await关键字; // 需要准备一个数据类型变量,来承载; // 指定函数返回类型String,Alt+enter 改成 Future Future

2.9K10

Flutter | 路由管理

2,创建一个文本按钮,点击进行跳转 child: Text("点击跳转"), textColor: Colors.red, onPressed: () { //导航到新路由...settings, this.maintainState = true, bool fullscreenDialog = false, }) builder 是 WidgetBuilder 类型回调函数...中若此参数为 true,新页面会从底部滑入,而不是水平方向 Navigator Navigator 是一个路由管理组件,它提供了打开和退出路由方法 Navigator 通过栈来管理活动路由集合,通常屏幕显示页面就是栈顶路由...push(route); } 将给定路由入栈(打开页面),返回 future 对象,用于接收该路由出栈是返回数据。 关闭一个页面 Navigator.of(context)!....I/flutter (23778): 路由返回值 我是返回值 需要注意是 ​ 1,参数是通过构造方法传入 ​ 2,如果点击左上角,或者返回按钮进行返回,则页面返回值为 null 命名路由 有名字路由

92350

Flutter中基本路由、命名路由、替换路由,返回到根路由

Flutter中路由,通俗地讲就是页面跳转。在Flutter中通过 Navigator 组件管理路由导航。 Flutter中给我们提供了两种配置路由跳转方式:基本路由和命名路由。...= null) {//页面跳转前有传参 final Route route = MaterialPageRoute( builder: (...= null) { //页面跳转前有传参 final Route route = MaterialPageRoute( builder: (context)...~${this.arguments["name"]}")//6,获取到传递过来值 ); } } 这里DetailPage是一个StatefulWidget类型组件,我们按照上述123456...那么在绝大部分情况下,我们在页面跳转时候,还是采取普通命名路由跳转方式(而不是采取替换路由),此时,在跳转到多级页面之后,如何一键返回到主页面呢?

8.8K21
领券