首页 > 解决方案 > 避免在颤振中在 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 会引发侧边栏的问题:每次用户单击链接时,整个小部件显然会与页面的其余部分一起重建,因为侧边栏是实际页面的一部分。

标签: flutterflutter-web

解决方案


每次更改页面时,它都会在 Flutter Web 上重新构建小部件。您可以使用TabController,它允许您在不“重新加载”整个页面的情况下进行导航。

阅读此问题以了解如何


推荐阅读