假设我有Riverpod 2的AsyncNotifierProvider
final asyncOnlineUsersProvider =
AsyncNotifierProvider.autoDispose<AsyncUserListNotifier, List<User>>(() {
return AsyncUserListNotifier();
});
我想呈现一个只显示用户数量的小部件,并且我想优化它,以便只有当数量发生变化时才能再次呈现。我选择.select
如下:
final listSize = ref.watch(
asyncOnlineUsersProvider.select((data) => AsyncValue.data(data.value?.length)),
);
然后我们渲染小部件
listSize.when(
data: (data) => Text('Size:$data'),
error: (err, stack) => const Text('error'),
loading: () => const Text('loading'),
);
这种方法的问题是,加载并没有被调用,而是在获取数据时显示Size:null
,然后显示实际大小:Size:12
有没有一种方法可以实现这一点,这样我就可以使用.select
来呈现小部件,只有当列表的大小改变时,还可以在获取数据时显示加载?
1条答案
按热度按时间vsnjm48y1#
也许这个方法对你有用:
和
orElse
块永远不会显示。