flutter 如何使用Riverpod编写依赖状态的提供程序?

kx5bkwkv  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(130)

使用Riverpod框架,我有boolproviderB,如下所示:

final providerB = Provider<bool>((ref) {
  bool NewVal = true;
  // .... compute newVal
  return newVal;
}

字符串
我一直在尝试编写一个新的提供程序providerC,它统计providerB发出的bool的数量。但是,似乎不允许我从另一个提供程序(或从其内部)修改给定的提供程序,因此我无法存储和更新以前的计数器值。
什么是正确的方式来编写这样的providerC,并使其状态相关?

js5cn81o

js5cn81o1#

希望这说明了providerC需要看起来是什么样子:

import 'package:riverpod/riverpod.dart';

void main(List<String> arguments) {
  ProviderContainer()
    ..listen(providerB, (_, cur) {
      print('B is $cur');
    })
    ..listen(providerC, (_, cur) {
      print('C is $cur');
    });
}

final providerB = StreamProvider(
  (ref) => Stream<bool>.periodic(const Duration(seconds: 1), (i) => i.isEven),
);

final providerC = Provider((ref) {
  var count = 0;
  ref.listen(providerB, (_, __) {
    ref.state = ++count;
  });
  return count;
});

字符串
这只是统计状态转换,对于bool来说,也可以统计。你不会连续得到两个“真”或两个“假”。

相关问题