首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【Flutter 专题】110 页面间小跳转 (四)

插件,其方式基本类似; 注意: 一般采用 home 方式展示 Widget ,路由表中不设置 / 对应 root 路由; 3. initialRoute initialRoute 用于设置初始启动页面...,一般设置后就无需设置 home 属性,因为 home 对应展示 Widget 优先级更高;若首页映射表名称采用 / 对应 root 路由,可以省略 initialRoute 属性; class MyApp...4. onGenerateRoute onGenerateRoute 为 RouteFactory 类型构造函数,当使用静态路由进行页面跳转,进入未在 routes 中绑定的页面,都会在 onGenerateRoute...中进行回调;一般封装,不设置 routes 属性,均在 onGenerateRoute 中进行业务判断,常用作类似于拦截器的路由守卫等;同时对于公共的自定义路由专场动画也可以在此处理; Function...,无法 onGenerateRoute 中生成进行回调; 6. builder builder 属性常用作 MediaQuery 设备信息获取或用户信息偏好设置等;和尚之前有整理过关于 MediaQuery

43431

【Flutter 专题】57 图解页面小跳转 (三)

和尚在去年刚接触 Flutter 学习了一下页面跳转路由的基本用法,随着逐渐的学习和场景的使用,对一些特殊场景下路由使用进行尝试; Pop / Push pushReplacementNamed...B 页面采用 pushReplacementNamed / pushReplacement 方式到 C ,B 被 C 所替换,由 C 返回页面直接到 A,其中 B 替换被销毁;使用场景可用于 SplashActivity...// 上下文环境 Route newRoute, // 预跳转页 { TO result, Object arguments } // 设置返回信息和参数...对比一: 和尚为了区分测试, SecondPage -> ThirdPage 设置了左进左出的路由动效; ThirdPage -> ForthPage 设置了右进右出的路由动效;...popUntil 不可传递返回值,对于返回首页 firsPage 不可用 ModalRoute.withName('firstPage') 和尚整理了其他几种方式获取根目录首页路径; // 跳转

1.7K41

从零开始的Flutter之旅: Navigator

'', ); })); } 这里是通过点击文本跳转到WebViewPage页面,使用push操作来导航到WebViewPage页面,同时实例化时将相应的参数传递过去。...以上是相对比较原始的方法进行参数传递,还有另一种 做个Android的朋友都知道Activity页面跳转可以同Intent进行参数传递,而接受页面也可以通过Intent来获取传递过来的参数。...''}))); } 这是参数传递,下面是WebViewPage中对参数的接收处理 Map arguments = ModalRoute.of(context)...ModalRoute来获取的,获取到的arguments就是上面传递过来的参数map数据。...为了方便管理路由的跳转,这里使用了AppRoutes来统一管理路由的名称 class AppRoutes { final String routeName; final String pageTitle

72910

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

Flutter中,我们那么我们可以使用Navigator页面之间跳转。...arguments['name'] : 'null'}"), ), ); } } 上面是一个简单的 Flutter 的视图组件,我们使用参数 arguments 的时候只需要将其传入到...MaterialPageRoute MaterialPageRoute 是我们使用最为广泛的路由类,它继承自 PageRoute 类, PageRoute 类是一个抽象类继承抽象类 ModalRoute...maintainState:默认情况下,当入栈一个新路由,原来的路由仍然会被保存在内存中,如果想在路由没用的时候释放其所占用的所有资源,可以设置maintainState为false。...我们通过路由名称入栈新路由,应用会根据路由名称路由表中找到对应的WidgetBuilder回调函数,然后调用该回调函数生成路由widget并返回。

4.4K40

【Flutter 实战】路由堆栈详解

答案肯定是不可以的, 试想如下场景,进入购物App,展示购物列表,点击其中一个进入商品详细页面,使用 push 再次进入购物列表,然后进入商品详细页面......RaisedButton( child: Text('A 页面'), onPressed: () { Navigator.of(context).pop(); }, ) A 页面路由堆栈中只有...此时路由堆栈为空,没有可显示的页面,应用程序将会退出或者黑屏,好的用户体验不应如此,此时可以使用 maybePop,maybePop 只路由堆栈有可弹出路由才会弹出路由。...popUntil 有如下场景,入职新公司的时候,需要填写各种信息,这些信息分为不同部分,比如基本信息、工作信息、家庭信息等,这些不同模块不同页面,填写信息可以返回上一页,也可以取消,取消返回到首页...第二种:通过命名路由设置参数的方式: A 页面传递数据, RaisedButton( child: Text('A 页面'), onPressed: () { Navigator.of(

1.4K30

Flutter 1.17 中的导航解密和性能提升

Navigator 中其实也是使用了 Overlay 实现页面管理,每个打开的 Route 默认情况下是向 Overlay 插入了两个 OverlayEntry。...这就和 Route 有关,比如默认 Navigator 打开新的页面需要使用 MaterialPageRoute ,而生成 OverlayEntry 就是它的基类之一的 ModalRoute 完成。...会被设置为 opaque ,而 opaque 参数 PageRoute 里就是 @override bool get opaque => true; PopupRoute 中 opaque 就是...里面的 GlobalKey 自然也就用在了 _OverlayEntry 上,而当 Widget 使用了 GlobalKey,那么其对应的 Element 就会是 "Global" 的。...新的 _Theatre 将两个数组合并成一个 children 数组,然后将 onstageCount 之外的部分设置为 skipCount ,布局获取 _firstOnstageChild 进行布局

93520

《Flutter》-- 9.路由与导航

9.1.2 基本路由 基本路由无需提前注册,页面切换需要手动构造页面的实例,使用起来相对简单灵活,适用于应用中页面不多的场景。...Flutter中,路由表是一个Map结构,其中第一个参数对应页面的别名,第二个参数对应页面。..., ) ); } } 示例效果: 9.1.5 路由传参 可以在打开路由传递参数目标页面通过ModalRoute的RouteSettings获取页面传递的参数。...如果需要返回上一个页面回传参数,可以使用push()打开目标页面使用then()监听目标页面的返回值。...1)pushReplacementNamed 使用pushReplacement或pushReplacementNamed打开一个新页面,路由栈顶部的页面会被当前页面所替换。

1K20

Flutter开发(15)- 路由导航

对Android平台,打开一个页面会从屏幕底部滑动到屏幕的顶部,关闭页面从顶部滑动到底部消失 对iOS平台,打开一个页面会从屏幕右侧滑动到屏幕的左侧,关闭页面从左侧滑动到右侧消失 当然,iOS平台我们也可以使用...页面跳转,会返回一个Future 该Future会在详情页面调用pop,回调对应的then函数,并且会携带结果 _onPushTap(BuildContext context) { // 1.跳转代码...参数传递 因为通常命名路由,我们会在定义路由,直接创建好对象,比如HYDetailPage() 那么,命名路由如果有参数需要传递呢?...build方法中ModalRoute.of(context)可以获取到传递的参数 Widget build(BuildContext context) { // 1.获取数据 final message...路由钩子 3.3.1. onGenerateRoute 假如我们有一个HYAboutPage,也希望跳转,传入对应的参数message,并且已经有一个对应的构造方法 HYHomePage中添加跳转的代码

96120

Flutter 小技巧之 MediaQuery 和 build 优化你不知道的秘密

上,如下图所示,弹出键盘和未弹出键盘的情况下,可以看到 MediaQueryData 里一些参数的变化:viewInsets 没有弹出键盘是 0,弹出键盘之后 bottom 变成 336 padding...MediaQuery.of(context) 的地方触发 rebuild,举个例子:如下代码所示,我们 MyHomePage 里使用了 MediaQuery.of(context).size 并打印输出...试想一下,如果你每个页面开始的位置都是用了 MediaQuery.of(context) ,然后打开了 5 个页面,这时候你第 5 个页面弹出键盘,也触发了前面 4 个页面 rebuild,自然而然可能就会出现卡顿...这就和路由对象的基类 ModalRoute 有关系,因为它的内部会通过一个 _modalScopeCache 参数把 Widget 缓存起来,正如注释所说:缓存区域不随帧变化,以便得到最小化的构建。...举个简单的例子,如下代码所示:我们定义了一个 LikeScaffold 控件,控件内通过 widget.body 传递对象 LikeScaffold 内部我们使用了 MediaQuery.of

1K20

【技术创作101训练营】Flutter Routes 路由应用与封装小结

Route;而 popUtil 最典型的使用场景是连续操作页面之后,退出登录,此时清空栈并回退到首页;       使用 popUtil 需要注意两点: (a)....ModalRoute.withName(Navigator.defaultRouteName) (b). popUtil 方式不能添加返回参数,和尚尝试过两种方式;第一种可以重写 popUtil 方式...动态方式;RoutePredicate 为清空栈至指定 Route,了解其源码是循环栈内 Route,当与设置的 RoutePredicate 匹配返回 true,否则继续清除返回 false 未匹配的栈...,路由表中不设置 / 名称的 root 路由; 3. initialRoute initialRoute 为初始化路由,优先级低于 home,若初始化指定的是正常可用路由以 initialRoute...指定路由为准;否则以 home 为准; 4. onGenerateRoute onGenerateRoute 为重要的构造函数,使用未在 routes 中注册的命名路由均会在此回调,通过

1.3K102

关于 Core Data 并发编程的几点提示

启用 Core Data 并发调试参数 开发者 Core Data 中使用并发编程很容易碰到如下场景:程序调试期间没有出现问题。...为了将因违反 Core Data 并发规则导致的问题尽量扼杀开发阶段,使用 Core Data 框架,务必启动参数上添加-com.apple.CoreData.ConcurrencyDebug...因此, Core Data 中进行并发编程,请确保遵守以下规则: •托管对象上下文初始化时被绑定到了与之相关的线程(队列)。•从托管对象上下文中检索的托管对象被绑定到了所属上下文所在的队列。...,绝大多数的操作都会报错 }} 非主线程上调用 viewContext 的方法,程序会立即崩溃。...设置正确的合并策略 当使用了多个上下文或多个持久化存储协调器保存处在不同环境的托管对象就有可能发生冲突。 本节的合并策略中的合并,并非指上节中的上下文合并。

79720

flutter路由

,然后显示标题上就是使用了。...= null) print('接收到的参数:$value'); }); } 这样我们就能push到新页面然后点击返回按钮就能把参数返回到push到它的那个方法,然后then打印出来了: I/flutter...(21935): 接收到的参数:我是返回值 直接点击左上角那个返回值会为空,这样打印出来的就是: I/flutter (21935): 接收到的参数null 所以我们做了一个判断,不为空才执行打印...= null) print('接收到的参数:$value'); }); } 效果图: 返回到指定路由 这节我们使用popUntil方法返回到我们想要返回到的某个路由,首先再注册两个路由名: @override...builder: (context) => MyHomePage(), settings: new RouteSettings( name: MyHomePage().toStringShort(), // 设置的路由名

1.7K20

Java 中的 null 到底是什么?

如果尝试 null 引用上调用任何方法或字段,则会引发 NullPointerException 异常。...例如,在数据库中,如果一个字段没有值,它将被设置null Java 中,您可以使用 null 来表示类似的情况。...这可以在编译很难发现,因此需要小心处理 null 引用。2. 可能导致代码复杂性使用 null ,可能需要添加一些额外的逻辑来检查是否为空。这可能会使代码变得更加复杂,并增加错误的机会。3....可能会导致歧义有时 null 可以引起歧义。例如,如果将一个方法的返回值设置null,则无法确定返回的值是否表示“未找到”或“出错”等意义。这可能导致代码更加难以维护和理解。...使用 null ,需要小心处理可能引发 NullPointerException 和增加代码复杂性的问题。确定使用 null ,应该考虑使用其他替代方案,例如 Optional 类型和默认值。

80600

一个Flutter WebView侧滑bug的解决方案

self.webview.allowsBackForwardNavigationGestures = true; 而在Flutter中对应的API则是webview的初始化参数 child: WebView...( gestureNavigationEnabled: true, ) 但是改为false之后确实禁用了内部的侧滑返回,但是整个webview的侧滑返回依然有问题...解决方案 3.1 WillPopScope与手势怎么共存 使用WillPopScope使用手势的方法比较容易得出 onWillPop: Platform.isIOS ?...3.2 实时修改 onWillPop 顺利成章的想到根据内部是否能返回来修改onWillPop,在内部canGoBack为true将onWillPop置为null,而不是依赖回调事件(iOS回调事件not...搜索了一下ModalRoute的方法,发现是有一个动态的数组来存储callback,只要把数组里的callback移除,就跟onwillpop置为null的效果是一样的,因此最终可以动态化的来进行修改。

3.1K50

php面试题及答案

析构函数允许你使用一个对象之后执行任意代码来清除内存。 当PHP决定你的脚本不再与对象相关,析构函数将被调用。 一个函数的命名空间内,这会发生在函数return的时候。...isset()函数时调用此方法 __unset() :当在一个未定义的属性上调用unset()函数时调用此方法 __toString() :toString方法将一个对象转化成字符串自动调用,比如使用...如果在对象复制需要执行某些初始化操作,可以__clone方法实现 __autoload() :它会在试图使用尚未被定义的类自动调用。...通过调用此函数,脚本引擎 PHP 出错失败前有了最后一个机会加载所需的类。 注意: __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误。...加速表和表之间的连接 使用分组和排序子句进行数据检索,可以显著减少查询中分组和排序的时间 索引对数据库系统的负面影响是什么?

2.1K40
领券