只能从HookWidget的build方法调用useContext

问题描述

我正在Riverpod中创建一个简单的单值程序。有一个浮动操作按钮,单击后可增加计数器值。

这是MyHomePage小部件:

final provider = StateNotifierProvider((ref) => CounterNotifier());

class MyHomePage extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final counterModel = useProvider(provider.state);
    return Scaffold(
      appBar: AppBar(
        title: Text('Counter'),),body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,children: [
            Text('You have pushed the button this many times'),Text('${counterModel.count}',style: Theme.of(context).textTheme.headline4),],floatingActionButton: FloatingActionButton(
        onPressed: () {
          context.read(provider).increment();
        },child: Icon(Icons.add),);
  }
}

,然后将其作为Windows应用程序运行。

enter image description here

解决方法

就我而言,我在 HookWidget 的 build 方法之外分配了 useProvider() 方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...