为什么我们需要一个 "MultiRepositoryProvider" 和一个单独的 "MultiBlocProvider"?

Why do we need a "MultiRepositoryProvider" and a separate "MultiBlocProvider"?

所以我要问这里可能是个愚蠢的问题 - 但是为什么在 Flutter 中使用 Bloc 库时我们需要“MultiRepositoryProvider”和“MultiBlocProvider”?为什么不只拥有一个 MultiBlocProvider 呢?

MultiRepositoryProviderMultiBlocProvider 的代码几乎相同:

MultiRepositoryProvider

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);
}

MultiBlocProvider

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);
}

所以这只是为了维护清晰的代码。

区别在于RepositoryProviderBlocProvider

RepositoryProvider 不处理更新。您不能在运行时“更改”存储库,而 BlocProvider 可以 - 如果您在运行时更改对象,那么使用它的小部件将重建。