flutter - StreamProvider传递值并更新流结果

标签 flutter dart provider

我试图在应用加载后将变量传递给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/

相关文章:

flutter - 可拖动的小部件不会更改其位置

firebase - Flutter: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)

flutter - ffmpeg 似乎输出带有错误编解码器的视频?

flutter - Riverpod : Alternate way of overriding initState inside ConsumerWidget

security - 提供商不受支持或输入错误

flutter - Flutter:使用ChangeNotifier更新TextFormField文本

dart - 高程不适用于 flutter Material

dart - 为了清楚起见,我想在 Dart 中使用命名参数。我应该如何处理它们?

angular - dart angular 2在页面上的任何位置响应按键事件

flutter - 一旦应用程序从权限设置屏幕返回,Flutter应用程序中的空白屏幕