0

引用来自Riverpod文档:

一个可以使用 Hook 的 StatefulWidget

它的用法与 StatefulWidget 非常相似,但在 State.build 中使用了钩子。

不同的是它可以使用 Hook,它允许 HookWidget 存储可变数据而无需实现 State。

除此之外,除了引用之外,我找不到任何示例代码或其他教程或任何描述。

在这个简单的HookWidget我怎么能用它来实现StatefulHookWidget呢?

class MyHomePage extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final store = useMemoized(() => MyStore());
    return Container();
  }
}
4

1 回答 1

1

StatefulHookWidget 用于当您需要使用常规 StatefulWidget 的任何可覆盖函数时 - 如 didChangeDependencies、initState 或 dispose。

一般来说,除非你有一个非常好的或小众的理由来使用 StatefulHookWidget,否则还是更喜欢 HookWidget。

本质上,如果我们复制您的示例,则 Class1 和 Class2 就最终产品而言是等效的。唯一的区别是到达那里所需的措辞。

class Class1 extends HookWidget {
  const Class1({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final store = useMemoized(() => MyStore());
    return Container();
  }
}

class Class2 extends StatefulHookWidget {
  const Class2({Key? key}) : super(key: key);

  @override
  _Class2State createState() => _Class2State();
}

class _Class2State extends State<Class2> {
  @override
  Widget build(BuildContext context) {
    final store = useMemoized(() => MyStore());
    return Container();
  }
}
于 2021-09-12T23:36:55.463 回答