【问题标题】:Flutter what's StatefulHookWidget and how can we use it?Flutter 什么是 StatefulHookWidget 以及我们如何使用它?
【发布时间】:2021-09-11 15:30:16
【问题描述】:
引用来自Riverpod 文档:
一个可以使用 Hook 的 StatefulWidget
它的用法和StatefulWidget很相似,但是里面使用了钩子
State.build.
不同的是它可以使用Hook,它允许HookWidget
在不实现状态的情况下存储可变数据。
除此之外,除了引用之外,我找不到任何示例代码或其他教程或任何描述。
在这个简单的HookWidget 中,我如何使用StatefulHookWidget 来实现它?
class MyHomePage extends HookWidget {
@override
Widget build(BuildContext context) {
final store = useMemoized(() => MyStore());
return Container();
}
}
【问题讨论】:
标签:
flutter
dart
riverpod
hook-widgets
【解决方案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();
}
}