Flutter Riverpod在StreamProvider中选择属性

tyg4sfes  于 2023-06-24  发布在  Flutter
关注(0)|答案(1)|浏览(144)

我正在努力实现这样的目标:

final myStreamProvider = StreamProvider<User>((ref) {
  return MyStreams.getUserStream;
});

// rebuild the widget only if user's name changes
final name = ref.watch(myStreamProvider.select((value) => value.name));

我只是在上面举了一个小例子。基本上,我希望小部件仅在用户名更改时才重新构建。但是在这种情况下,即使用户的其他属性发生了变化,我的小部件也会重新生成。
如何在Riverpod中使用StreamProvider的“select”方法?

qybjjes1

qybjjes11#

诀窍是选择流值,然后调用.when(或.whenData等)来处理它
在您的案例中:

final myStream = ref.watch(someStreamProvider.select(
      (theStream) => theStream.when(
         data: (data)=>data,
         error: (error, stack) => 'There was no name',
         loading:() => 'Loading Name'),
    ),
);

相关问题