我想显示CircularProgressIndicator,同时等待将来使用flutter_riverpod解决,这是我的代码片段。但它没有显示,我正在使用ConsumerStatefulWidget,这是正确的方法吗?
ElevatedButton(
onPressed: () {
rejectResponse = ref
.read(notificationRepositoryProvider)
.approveDocument(1);
Navigator.of(context).pop();
setState(() {});
},
child: FutureBuilder(
future: rejectResponse,
builder: (context, snapshot) {
if (snapshot.connectionState ==
ConnectionState.done) {
if (snapshot.hasData) {
return Text('Yes');
} else if (snapshot.hasError) {
return Text('Error');
}
} else if (snapshot.connectionState ==
ConnectionState.waiting) {
return CircularProgressIndicator();
}
return Text('Yes');
}),
),
2条答案
按热度按时间ozxc1zmp1#
在Riverpod中执行此操作的首选方法是使用FutureProvider和AsyncValue:
请注意,在初始加载之后,FutureProvider将为return the previous value but will set AsyncValue.isRefreshing to true。为了避免这种情况并始终在刷新时显示加载器,可以将
skipLoadingOnRefresh
设置为false。4ktjp1zp2#
你可以使用
ConnectionState
,但我认为它也可以处于none
状态,所以你可以检查它是否完成,如果没有,你可能应该显示加载指示器。我通常使用
hasData
属性来代替,这样可以减少必须处理的状态数,并且可以安全地假设snapshot.data
不是null
。