我应该如何实现 init 方法?在有状态或无状态的小部件中?

How should I implement the init method? In a stateful or stateless widget?

使用小部件的初始方法的经验法则是什么。我可以使用:

根据我的测试,两者似乎都有效。在代码减少方面,B. 方法似乎更好、更短、更清晰且更具可读性。性能方面怎么样?还有什么我可能遗漏的吗?

初始化控制器应该是一个one-time操作;如果您在 StatelessWidgetbuild 方法上执行此操作,则每次此小部件都会触发它被重建。如果你在 StatefulWidgetinitState 上执行它,它只会被调用一次,当这个State 初始化时对象被插入到树中。

每当您进行热重载或页面刷新时,小部件构建中的所有功能或其他东西都会 运行 但是 initState 它会 运行 一旦开始应用程序或当您在 IDE 中重新启动应用程序时,例如在 StatefulWidget 小部件中,您可以使用:

void initState() {
    super.initState();
    WidgetsBinding.instance!
        .addPostFrameCallback((_) => your_function(context));
  }