Flutter StreamProvider传递值并更新流结果
我试图在应用程序加载后将一个变量传递给Flutter StreamProvider传递值并更新流结果,flutter,dart,provider,Flutter,Dart,Provider,我试图在应用程序加载后将一个变量传递给StreamProviderput,更改endTime值不会更改流输出/数据 class _PrayersGlobalState extends State<PrayersGlobal> { PrayersViewModel modelGlobal = serviceLocator<PrayersViewModel>(); @override Widget build(BuildContext context) {
StreamProvider
put,更改endTime
值不会更改流输出/数据
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;
},
),
],
class\u ragersglobalstate扩展状态{
PrayersViewModel modelGlobal=serviceLocator();
@凌驾
小部件构建(构建上下文){
modelGlobal.streamData(
祈祷类型:1,
用户ID:1,
更新日期:“2020-04-10”,
endTime:'2020-05-'+((1+_random.nextInt(5))*5.toString(),
);
回程多供应商(
供应商:[
流提供者(
创建:(上下文)=>modelGlobal.streams,
catchError:(上下文,err){
打印('Error:'+err.toString());
返回;
},
),
],
下面是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);
}
void streamData({
int-prayerType,
int userId,
字符串已更新,
字符串结束时间,
}) {
最终流streamPs=\u graphQLService.GetGragerStream(
祈祷类型:祈祷类型,
userId:userId,
updatedOn:updatedOn,
endTime:endTime,
);
打印('EndTime In Model:$EndTime');
这个._streamPrayers.sink.addStream(streamPs);
}
此代码100%正常工作,我使用的是一个名为hasura_connect的颤振软件包
我没有正确阅读文档,因为需要调用一个单独的函数来向变量传递不同的值
//change values of variables for PAGINATIONS
snapshot.changeVariable({"limit": 20});
介意发布你的
streamData
方法在做什么吗?它调用GraphQL查询并返回数据,它在应用程序第一次加载时起作用,之后更改endTime
的值似乎不会影响流的输出。我已经更新了代码。