din*_*ngo 0 dart flutter flutter-bloc
我目前正在学习使用 BLoC 模式进行 Flutter 和 Dart 的状态管理和架构。
我遇到过两种在小部件中提供对 BLoC 的访问的方法。
1 - 访问小部件并将其传递到另一个屏幕时使用 BLoCProvider 或 BLoCProvider.value。
2 - 将您的 MaterialApp 小部件包装在 BLoCProvider 中,以提供对全局块的访问。
似乎使用第二个选项总是最简单的 - 管理 BLoC 的单个位置,构建上下文引用没有问题,确保单个 BLoC 实例,并允许全局访问!
以这种方式创建和提供所有应用程序 BLoC 是否有任何缺点?是否存在性能问题等?
我昨天在另一个问题中简单回答过这个问题。
简而言之:
让所有块都可在全球范围内访问可能会对性能产生负面影响,并且会破坏常见的良好编程实践。
这是来自 flutter bloc 的创建者(Felix Angelov)的:
在全球范围内提供所有集团的主要缺点是:
- 这些块永远不会关闭,因此即使当前小部件树没有使用它们,它们也会消耗资源
- 即使块的状态仅限于特定功能,也可以从任何地方访问块
- 这些块通常最终需要某种“重置”事件来恢复到初始状态,如果它们的范围正确并由 BlocProvider 自动处置,则不需要这种情况
我的建议是为每个功能创建一个块,并仅将该块提供给需要它的特定子树。希望有帮助
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |