只能从HookWidget的build方法调用useContext

时间:2020-10-18 06:43:21

标签: flutter riverpod

我正在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

1 个答案:

答案 0 :(得分:0)

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