async_provider.dart中StreamProvider._构造函数的好处是什么?

时间:2019-10-31 12:09:10

标签: flutter dart

我正在学习Flutter的状态管理提供程序。我不明白为什么要为StreamProvier设置“ _”构造函数。是否可以在没有构造函数“ _”的情况下实现StreamProvider.value? 谢谢! 这是代码段和the file link

/// Listens to [value] and expose it to all of [StreamProvider] descendants.
  StreamProvider.value({
    Key key,
    @required Stream<T> value,
    T initialData,
    ErrorBuilder<T> catchError,
    UpdateShouldNotify<T> updateShouldNotify,
    Widget child,
  }) : this._(
          key: key,
          delegate: SingleValueDelegate(value),
          initialData: initialData,
          catchError: catchError,
          updateShouldNotify: updateShouldNotify,
          child: child,
        );
  StreamProvider._({
    Key key,
    @required ValueStateDelegate<Stream<T>> delegate,
    this.initialData,
    this.catchError,
    this.updateShouldNotify,
    this.child,
  }) : super(key: key, delegate: delegate);

1 个答案:

答案 0 :(得分:1)

之所以使用此构造函数,主要是因为MultiProvider当前如何工作: MultiProvider依赖于克隆小部件。

问题是,提供程序(包括StreamProvider)倾向于具有两个具有不同参数的公共构造函数。

因此,该私有构造函数用作使用MultiProvider的“克隆”方法的实现细节。