flutter 如何流畅切换屏幕?

cpjpxq1n  于 2023-01-14  发布在  Flutter
关注(0)|答案(4)|浏览(158)

我有三个屏幕:1、2、3,我想从屏幕2切换到屏幕3,但是当我弹出屏幕2并推按屏幕3时,然后它显示屏幕1一段时间,然后它显示屏幕3,那么有没有办法在推按后使用弹出切换屏幕?

此代码不是预期代码

Navigator.push(
  context,
  MaterialPageRoute<Widget>(
    builder: (context) => widget,
  ),
);
Navigator.pop(context);
ss2ws0br

ss2ws0br1#

使用pushReplacement代替push

Navigator.pushReplacement(
  context,
  MaterialPageRoute<Widget>(
    builder: (context) => widget,
  ),
);
pkln4tw6

pkln4tw62#

使用推式代替推式
导航器.pushReplacement(上下文,材料页面路径(构建器:(上下文)=〉小部件,),);

rta7y2nd

rta7y2nd3#

你所描述的行为很可能是因为当你调用Navigator.pop(context),时,它从导航栈中移除了当前屏幕(屏幕2),但是框架还没有机会构建和显示你推送的新屏幕(屏幕3),所以,在很短的一段时间内,上一个屏幕(屏幕1)是可见的。
切换屏幕而不出现 Flink 的一种方法是使用Navigator. pushReplacement代替Navigator. push,然后使用Navigator. pop. Navigator. pushReplacement从导航堆栈中删除当前屏幕,并用新屏幕替换它,所有这些操作只需一步即可完成。
示例:

Navigator.pushReplacement(
  context,
  MaterialPageRoute<Widget>(
    builder: (context) => widget3,
  ),
);

这将直接从屏幕2切换到屏幕3。

dphi5xsq

dphi5xsq4#

通常不建议在同一个函数调用中同时使用Navigator.push()Navigator.pop(),因为这可能会导致意外行为。相反,您可以使用Navigator.replace()将当前屏幕替换为新屏幕,或者使用Navigator.pushNamedAndRemoveUntil()推送新屏幕并删除其之前的所有屏幕。

相关问题