我是新手,目前正在研究 DI。
我正在使用flutter_bloc
和provider
包。
flutter_bloc
附带一个RepositoryProvider
,我现在问自己的问题是两者的区别是Provider
什么provider
?
存储库有什么特别之处,RepositoryProvider
还是只是一种命名策略?
我是新手,目前正在研究 DI。
我正在使用flutter_bloc
和provider
包。
flutter_bloc
附带一个RepositoryProvider
,我现在问自己的问题是两者的区别是Provider
什么provider
?
存储库有什么特别之处,RepositoryProvider
还是只是一种命名策略?
Provider.value
)。这意味着如果您在运行时更改对象,那么使用它的小部件将重建。这种差异的影响是对生命周期的影响,例如initState
:
使用Provider,您必须明确不监听对象更改:
void initState() {
super.initState();
// will fail if listen: false is not specified
Provider.of<MyObject>(context, listen: false);
}
使用RepositoryProvider,您不必关心:
void initState() {
super.initState();
RepositoryProvider.of<MyObject>(context);
}
所以这只是冗长的区别。
事实上,从Provider 版本 4.1.0开始,您可以使用context.read<MyObject>()
代替Provider.of<MyObject>(context, listen: false)
- 这减少了冗长的差异