【问题标题】: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();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-04
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2014-05-27
      相关资源
      最近更新 更多