flutter - 避免在颤振中在 navigator.push 上重新构建小部件
问题描述
当我们使用导航器推送页面时,是否存在避免重建“相同”小部件的方法?
示例:避免从导航器从第 1 页推送到第 2 页时重建 MyFancyWidget()?
//page 1
return Scaffold(
body: Row([
MyFancyWidget(),
/*Remaining part of the first page*/
])
);
//page 2
return Scaffold(
body: Row([
MyFancyWidget(),
/*Remaining part of the second page*/
])
);
用例:
在 Flutter Web 中构建侧边栏时遇到问题。由于在我的应用程序中导航是一个特殊问题,因此每次单击侧边栏中的页面链接时,我都需要使用 navigator.pushNamed。之所以选择此选项,是因为如果用户单击重新加载按钮或在他/她尝试使用浏览器的“后退按钮”导航时加载上一个页面,我需要我的网站打开该特定页面。然而,使用 pushNamed 会引发侧边栏的问题:每次用户单击链接时,整个小部件显然会与页面的其余部分一起重建,因为侧边栏是实际页面的一部分。
解决方案
每次更改页面时,它都会在 Flutter Web 上重新构建小部件。您可以使用TabController,它允许您在不“重新加载”整个页面的情况下进行导航。
推荐阅读
- java - 如何使用 Jsoup Java 按属性取值?
- c - char 数组开头的意外字符
- android - 在 Transform.map 函数中使用协程
- phpstorm - 在 PhpStorm 中使用 2 个应用程序不会丢失当前会话选项
- html - SVG 图像作为光标像素化
- html - 我可以通过 html 中的图像(从后面)的一部分显示视频吗?
- flutter - 谷歌 MLKIT 在文本识别时显示此错误:“等待下载文本识别模型。请稍候”
- sql - 需要帮助了解 SQL Server 中的删除语句
- javascript - 如何关闭 ASP.NET 应用程序的默认选项卡
- javascript - 尝试从文件中读取数据时,readFileSync 返回 undefined