首页 > 解决方案 > 在根小部件中调用多次构建方法

问题描述

当我重新启动我的颤振应用程序时,我的根小部件构建了几次。在我的情况下3次。我认为它应该只在应用重启后构建一次。我也知道,什么时候会根据官方文档调用“构建方法” 。但是官方的原因似乎不适合我的情况。

有人可以解释一下这背后的理论吗,或者它只是发生在我身上

谢谢

void main() => runApp(MainWidget());

class MainWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print("main build");
    return ChildWidget();
  }
}

class ChildWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print("child build");
    return MaterialApp(
      home: Text("test"),
    );
  }
}

结果

Restarted application in 677ms.
I/flutter ( 3604): main build
I/flutter ( 3604): child build
I/flutter ( 3604): main build
I/flutter ( 3604): child build
I/flutter ( 3604): main build
I/flutter ( 3604): child build

标签: flutter

解决方案


最后我想通了这个问题。这是因为 Flutter SDK 版本。我正在使用 SDK ">=2.7.0 <3.0.0"。当我在 pubspec.yaml 文件中将 SDK 版本更改为 ">=2.12.0 <3.0.0" 时,构建只调用一次。


推荐阅读