FutureBuilder更新定时器



我不太明白如何在FutureBuilder中通过计时器更新未来。我试图创建一个计时器,并把它给未来,但它没有工作,有一个错误:类型'_Timer'不是'未来的子类型?'

my handler with a request:

Future<ObjectStateInfoModel> read(int id) async {
TransportResponse response = await transport.request(
'get',
RequestConfig(path: path + '($id)'),
TransportConfig(
headers: {},
));
ObjectStateInfoModel objectState = ObjectStateInfoModel.fromJson(response.data);
return objectState;
}

我FutureBuilder:

return FutureBuilder<ObjectStateInfoModel>(
future: logexpertClient.objectsState.read(object.id),
builder: (context, snapshot) {
if (snapshot.hasData) {
final data = snapshot.data!;

根据其中一位评论者的建议,我将FutureBuilder转换为StreamBuilder并创建了这样的流,然后一切正常工作:

stream = Stream.periodic(const Duration(seconds: 5)).asyncMap((_) async {
return logexpertClient.objectsState.read(object.id);
});

使用refreshable_widget,它是专门为此构建的。

https://pub.dev/packages/refreshable_widget

Flexible(
child: RefreshableWidget<num>(
initialValue: challenge.userParticipation!.donePercent,
refreshCall: () async {
final challenge =
await cadoo.getChallengeDetail(
id: widget.challengeId,
); 
return challenge.userParticipation!.donePercent;
},
builder: (context, value) {
return DonePercentWidget(
percent: value,
);
},
),
),

传递一个刷新调用和你想要刷新的频率,widget将在builder方法上构建任何东西。

最新更新