在 Widget 中初始化 StateProvider

Initialize StateProvider in Widget

我只想使用小部件参数初始化提供程序一次。出于某种原因,我无法使用 .family。我不确定这是否是正确的方法。你能检查一下吗?谢谢。

StateProvider<String> valueStateProvider;

class Widget extends HookWidget {
  final String value;

  Widget({@required this.value}) {
    valueStateProvider = StateProvider<String>((ref) => this.value);
  }
}

终于找到了正确的方法。这种情况有特殊的提供者类型。 ScopedProvider.

final scopedProvider = ScopedProvider<String>((_) => throw UnimplementedError());

class Widget extends HookWidget {
  Widget({@required this.value});
  final String value;

  @override
  Widget build(BuildContext context) {
    return ProviderScope(
      overrides: [scopedProvider.overrideWithValue(this.value)],
      child: AnotherWidget()
     );
  }
}

所以你可以在AnotherWidget中使用scopedProvider。耶!