当状态随 Provider 发生变化时,使用 StatelessWidget 是安全的吗?
It is safe to use StatelessWidget when the state changes with a Provider?
我看到 flutter 团队这样建议:
For example, in Android, this is similar to placing an ImageView with your logo. The logo is not going to change >during runtime, so use a StatelessWidget in Flutter.
If you want to dynamically change the UI based on data received after making an HTTP call or user interaction then you have to work with StatefulWidget and tell the Flutter framework that the widget’s State has been updated so it can update that widget.
https://flutter.dev/docs/get-started/flutter-for/android-devs#how-do-i-update-widgets
我正在使用 provider,它允许您使用 ChangeNotifierProvider
重建小部件树。
如果我有一个 StatelessWidget
并且我们使用 ChangeNotifierProvider
,当 ChangeNotifier
通知更改时,build
函数仍然被调用多次,并且小部件重建,这让我很困惑 StatelessWidget
和 StatefullWidget
.
之间的区别
- 如果我们在其中使用
ChangeNotifierProvider
,那么使用 StatelessWidget
是安全的吗?
- 与
StatefullWidget
相比,使用 StatelessWidget
是否有任何性能提升?
“安全”不适用,因为 setState
是 State
class 上的一种方法,并且由于 StatelessWidget
没有其中之一,因此甚至不会出现。并且没有关于性能的广泛全面的规则。试一试,看看。
这有点令人困惑,但这个解释可能会有所帮助:
由于 ChangeNotifierProvider
将处理状态,因此父级(您的小部件)不需要 Statefull
,该责任转到 ChangeNotifierProvider
小部件。
我看到 flutter 团队这样建议:
For example, in Android, this is similar to placing an ImageView with your logo. The logo is not going to change >during runtime, so use a StatelessWidget in Flutter. If you want to dynamically change the UI based on data received after making an HTTP call or user interaction then you have to work with StatefulWidget and tell the Flutter framework that the widget’s State has been updated so it can update that widget. https://flutter.dev/docs/get-started/flutter-for/android-devs#how-do-i-update-widgets
我正在使用 provider,它允许您使用 ChangeNotifierProvider
重建小部件树。
如果我有一个 StatelessWidget
并且我们使用 ChangeNotifierProvider
,当 ChangeNotifier
通知更改时,build
函数仍然被调用多次,并且小部件重建,这让我很困惑 StatelessWidget
和 StatefullWidget
.
- 如果我们在其中使用
ChangeNotifierProvider
,那么使用StatelessWidget
是安全的吗? - 与
StatefullWidget
相比,使用StatelessWidget
是否有任何性能提升?
“安全”不适用,因为 setState
是 State
class 上的一种方法,并且由于 StatelessWidget
没有其中之一,因此甚至不会出现。并且没有关于性能的广泛全面的规则。试一试,看看。
这有点令人困惑,但这个解释可能会有所帮助:
由于 ChangeNotifierProvider
将处理状态,因此父级(您的小部件)不需要 Statefull
,该责任转到 ChangeNotifierProvider
小部件。