flutter - Flutter Navigation 重新渲染历史堆栈页面中的所有页面
问题描述
我刚刚意识到,当导航发生变化时,颤动会重新渲染历史堆栈中的所有页面。就我而言,我不想在所有堆栈页面历史记录下方呈现页面。我只想呈现我当前的页面。
第一页
Widget build(BuildContext context){
print("1st page");
return RaisedButton(onPressed: goToSecondPage())
}
第二页
Widget build(BuildContext context){
print("2nd page");
return RaisedButton(onPressed: goToThirdPage())
}
第三页
Widget build(BuildContext context){
print("3rd page");
return Text("I am Third Page, The Last");
}
在我的实现中,我使用Navigator.push(context, MaterialPageRoute(builder: (_) => SecondPage())
导航。
日志场景:启动
1st page
转到第二页
2nd page
1st page
转到第三页
3rd page
2nd page
1st page
返回第二页
2nd page
1st page
解决方案
这是 Flutter 当前的预期行为,请参阅此处的对话:https ://github.com/flutter/flutter/issues/11655
这是另一个谈论同一件事的 SO 问题:如何处理不需要的小部件构建?
以及当前打开的拉取请求以更改此行为: https ://github.com/flutter/flutter/pull/44731
推荐阅读
- node.js - 尝试在虚拟环境中使用 ipywidgets 时,npm 不起作用
- javascript - TypeScript 编译器不遵循 ESLint 规则
- python - 重新安装 Catboost 0.22 或 0.23
- r - 检查列中的单词列表
- javascript - 在 node.js 中需要带有注释的 JSON
- excel - 从整个工作簿而不是仅从当前工作表中查找和替换
- bash - Bash:正则表达式确定字符串是否至少包含@、#、$、%、&、*、+、-、= 之一
- c# - Ionic.Zip、System.IO.Compression 和 SharpCompress 之间的 Zlib 压缩不兼容
- angular - 当我使用“ng serve --open”运行我的 Angular 项目时,我收到一个错误
- javascript - s3.upload 不做任何事情