为什么我们需要一个 "MultiRepositoryProvider" 和一个单独的 "MultiBlocProvider"?
Why do we need a "MultiRepositoryProvider" and a separate "MultiBlocProvider"?
所以我要问这里可能是个愚蠢的问题 - 但是为什么在 Flutter 中使用 Bloc 库时我们需要“MultiRepositoryProvider”和“MultiBlocProvider”?为什么不只拥有一个 MultiBlocProvider 呢?
MultiRepositoryProvider
和 MultiBlocProvider
的代码几乎相同:
class MultiRepositoryProvider extends MultiProvider {
/// {@macro multi_repository_provider}
MultiRepositoryProvider({
Key? key,
required List<RepositoryProviderSingleChildWidget> providers,
required Widget child,
}) : super(key: key, providers: providers, child: child);
}
class MultiBlocProvider extends MultiProvider {
/// {@macro multi_bloc_provider}
MultiBlocProvider({
Key? key,
required List<BlocProviderSingleChildWidget> providers,
required Widget child,
}) : super(key: key, providers: providers, child: child);
}
所以这只是为了维护清晰的代码。
区别在于RepositoryProvider
和BlocProvider
:
RepositoryProvider
不处理更新。您不能在运行时“更改”存储库,而 BlocProvider
可以 - 如果您在运行时更改对象,那么使用它的小部件将重建。
所以我要问这里可能是个愚蠢的问题 - 但是为什么在 Flutter 中使用 Bloc 库时我们需要“MultiRepositoryProvider”和“MultiBlocProvider”?为什么不只拥有一个 MultiBlocProvider 呢?
MultiRepositoryProvider
和 MultiBlocProvider
的代码几乎相同:
class MultiRepositoryProvider extends MultiProvider {
/// {@macro multi_repository_provider}
MultiRepositoryProvider({
Key? key,
required List<RepositoryProviderSingleChildWidget> providers,
required Widget child,
}) : super(key: key, providers: providers, child: child);
}
class MultiBlocProvider extends MultiProvider {
/// {@macro multi_bloc_provider}
MultiBlocProvider({
Key? key,
required List<BlocProviderSingleChildWidget> providers,
required Widget child,
}) : super(key: key, providers: providers, child: child);
}
所以这只是为了维护清晰的代码。
区别在于RepositoryProvider
和BlocProvider
:
RepositoryProvider
不处理更新。您不能在运行时“更改”存储库,而 BlocProvider
可以 - 如果您在运行时更改对象,那么使用它的小部件将重建。