我应该如何实现 init 方法?在有状态或无状态的小部件中?
How should I implement the init method? In a stateful or stateless widget?
使用小部件的初始方法的经验法则是什么。我可以使用:
- 一个。经典的有状态小部件方法?
- 还是坚持使用 B 更好。无状态小部件方法?
根据我的测试,两者似乎都有效。在代码减少方面,B. 方法似乎更好、更短、更清晰且更具可读性。性能方面怎么样?还有什么我可能遗漏的吗?
初始化控制器应该是一个one-time操作;如果您在 StatelessWidget 的 build 方法上执行此操作,则每次此小部件都会触发它被重建。如果你在 StatefulWidget 的 initState 上执行它,它只会被调用一次,当这个State 初始化时对象被插入到树中。
每当您进行热重载或页面刷新时,小部件构建中的所有功能或其他东西都会 运行 但是 initState
它会 运行 一旦开始应用程序或当您在 IDE 中重新启动应用程序时,例如在 StatefulWidget
小部件中,您可以使用:
void initState() {
super.initState();
WidgetsBinding.instance!
.addPostFrameCallback((_) => your_function(context));
}
使用小部件的初始方法的经验法则是什么。我可以使用:
- 一个。经典的有状态小部件方法?
- 还是坚持使用 B 更好。无状态小部件方法?
根据我的测试,两者似乎都有效。在代码减少方面,B. 方法似乎更好、更短、更清晰且更具可读性。性能方面怎么样?还有什么我可能遗漏的吗?
初始化控制器应该是一个one-time操作;如果您在 StatelessWidget 的 build 方法上执行此操作,则每次此小部件都会触发它被重建。如果你在 StatefulWidget 的 initState 上执行它,它只会被调用一次,当这个State 初始化时对象被插入到树中。
每当您进行热重载或页面刷新时,小部件构建中的所有功能或其他东西都会 运行 但是 initState
它会 运行 一旦开始应用程序或当您在 IDE 中重新启动应用程序时,例如在 StatefulWidget
小部件中,您可以使用:
void initState() {
super.initState();
WidgetsBinding.instance!
.addPostFrameCallback((_) => your_function(context));
}