我刚刚意识到,当导航更改时,抖动会重新呈现历史记录堆栈中的所有页面。就我而言,我不想在所有堆栈页面历史记录下方显示页面。我只想只渲染当前页面。
首页
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
答案 0 :(得分:2)
这是Flutter当前的预期行为,请参见此处的对话:https://github.com/flutter/flutter/issues/11655
这是另一个谈论同一件事的问题:How to deal with unwanted widget build?
以及当前打开的拉取请求以更改此行为: https://github.com/flutter/flutter/pull/44731