【问题标题】:Flutter why when I return to my original page the build runs again?Flutter 为什么当我返回原始页面时构建再次运行?
【发布时间】:2020-07-23 20:09:32
【问题描述】:

当我使用调用另一个页面时为什么会抖动

Navigator.pushNamed(context, 'namePage', arguments: varHello);

在我的名为 namePage 的页面中,我得到的参数 varHello 是这样的:

  @override
  Widget build(BuildContext context) {   
   final aux = ModalRoute.of(context).settings.arguments;
  }

为什么当我返回原始页面时,会发送 namePage 构建以再次调用? 例如,如果我将打印放入构建中

  @override
  Widget build(BuildContext context) {  
   print("hello world"); 
   final aux = ModalRoute.of(context).settings.arguments;
  }

当我转到控制台打印“hello world”上的namePage页面时

但是当我返回上一页(我发送到名称页面的地方)时,控制台再次打印“hello world”

【问题讨论】:

    标签: android flutter navigation arguments


    【解决方案1】:

    来自 Flutter 团队的回复。
    Pages on Navigator stack rebuild when a new page is pushed https://github.com/flutter/flutter/issues/11655#issuecomment-348287396

    这是按预期工作的。一般来说,您应该假设所有小部件都可以随时重新构建,而它们不能重建主要只是一种优化。

    特别是,路线将重建,因为它们的导航器状态已更改,因此它们可能需要更新它们如何绘制返回按钮等。

    【讨论】:

    • 你知道我怎样才能消除这种影响吗?因为我在第二页初始化时调用了一个 API,但是当我弹出这个页面时,我再次调用了 API,我不想这样做 D:
    • 需要重现您的案例。您能否提供重现代码并发布到新问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2021-10-10
    相关资源
    最近更新 更多