有没有办法在声明后更新 River pod 中的状态提供者的值

问题描述 投票:0回答:2
final itemCountProvider = StateProvider<int>((ref) {
  return 0;
});

我需要跟踪项目中选择的项目数量,最初项目计数为零,但后来我需要给它计算值如何更新 itemCountProvider 中的值,因为它已经声明为最终值

flutter dart provider state-management riverpod
2个回答
7
投票

您可以使用

read

更新状态
  1. 如果你想每次更新一个新值
ref.read(itemCountProvider.state).state = newValue;
  1. 如果您想根据之前的状态值进行更新
ref.read(itemCountProvider.state).state = ref.read(itemCountProvider.state).state + newValue;

ref.read(itemCountProvider.state).state += newValue;

ref.read(counterProvider.notifier).update((state) => state + newValue);

6
投票

您可以像这样更新状态提供者的值:

ref.read(itemCountProvider.state).state = 10;

这是一个计数器应用程序示例:

final itemCountProvider = StateProvider((ref) => 0);
class HomePage extends ConsumerWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final counter = ref.watch(itemCountProvider);
    return Scaffold(
      body: Center(
        child: Text(
          counter.toString(),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          ref.read(counterProvider.state).state += 1;
        },
      ),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.