我试图在应用加载后将变量传递给StreamProvider
,更改的endTime
值不会更改Stream输出/数据。
class _PrayersGlobalState extends State<PrayersGlobal> {
PrayersViewModel modelGlobal = serviceLocator<PrayersViewModel>();
@override
Widget build(BuildContext context) {
modelGlobal.streamData(
prayerType: 1,
userId: 1,
updatedOn: '2020-04-10',
endTime: '2020-05-' + ((1 + _random.nextInt(5)) * 5).toString(),
);
return MultiProvider(
providers: [
StreamProvider<List<Prayers>>(
create: (context) => modelGlobal.streamPrayers,
catchError: (context, err) {
print('Error : ' + err.toString());
return;
},
),
],
这是 streamData 函数,它从GraphQL订阅获取流
void streamData({
int prayerType,
int userId,
String updatedOn,
String endTime,
}) {
final Stream<Prayers> streamPs = _graphQLService.getPrayerStream(
prayerType: prayerType,
userId: userId,
updatedOn: updatedOn,
endTime: endTime,
);
print('EndTime In Model : $endTime');
this._streamPrayers.sink.addStream(streamPs);
}
最佳答案
这段代码可以100%正确地工作,我使用的是名为hasura_connect
的flutter程序包
https://pub.dev/packages/hasura_connect
我错过了正确阅读文档的知识,有一个单独的函数需要调用以将不同的值传递给变量。
//change values of variables for PAGINATIONS
snapshot.changeVariable({"limit": 20});
关于flutter - StreamProvider传递值并更新流结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61483151/