Flutter 什么是 StatefulHookWidget 以及我们如何使用它?

标签 flutter dart riverpod hook-widgets

引用自 Riverpod 文档:

A StatefulWidget that can use Hook

It's usage is very similar to StatefulWidget, but use hooks inside State.build.

The difference is that it can use Hook, which allows HookWidget to store mutable data without implementing a State.

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

在这个简单的 HookWidget 中,我如何使用 StatefulHookWidget 实现它?

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

最佳答案

StatefulHookWidget 适用于需要使用常规 StatefulWidget 的任何可重写函数的情况 - 例如 didChangeDependency、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();
  }
}

关于Flutter 什么是 StatefulHookWidget 以及我们如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69144391/

相关文章:

flutter - 无法在 Flutter 中与 RiverPod 正确使用 TextField

构建方法中的 Flutter Riverpod context.read vs Provider

flutter - 可以在 riverpods 中嵌套 Consumer Widgets 吗?

ios - Flutter(iOS)应用因崩溃而启动和停止

flutter - 错误: The argument type 'BuildContext' can't be assigned to the parameter type 'String'

flutter - Flutter:将数据发送到父页面并重新加载

flutter - 考虑到firebase用户是否在线处理firebase通知

dart - 在 dart 中使用镜像从类中获取静态常量

flutter - 可以在构建方法中声明函数吗?

在后台使用 OneSignal PushNotifications 进行抖动