首页 > 解决方案 > 如何从 Parse 实时查询流中返回一个字符串?

问题描述

我正在使用 Parse 实时查询从服务器获取对象。我终于发现 Subscription 对象是一个流。

我想要一种未来等待行为。我希望我的函数产生实时查询的结果。我怎样才能实现这种行为?

Future<String> isolateLiveQuery(String none) async {

  final LiveQuery liveQuery = LiveQuery();
  QueryBuilder<ParseObject> query = QueryBuilder<ParseObject>(ParseObject('Color'));
  Subscription subscription = await liveQuery.client.subscribe(query);

   subscription.on(LiveQueryEvent.create, (value) {
    // I want to yield value 
  });
}

编辑添加计算尝试:

这不能按预期工作,主要是没有等待。

Future<dynamic> isolateLiveQuery(String none) async {
  final LiveQuery liveQuery = LiveQuery();
  QueryBuilder<ParseObject> query = QueryBuilder<ParseObject>(ParseObject('Color'));
  Subscription subscription = await liveQuery.client.subscribe(query);
  final c = Completer<String>();
  
  subscription.on(LiveQueryEvent.create, (value) {
    String color;
    color = value['String'];
    c.complete(color);
  });
  return await c.future;
}

编辑:使用演示代码添加确切的期望结果:

到目前为止,这似乎无法使用实时查询订阅来实现。有没有人知道如何通过实时查询订阅实现以下目标?

  Future<double> getRandomValue() async {
  var random = Random(2);
  await Future.delayed(Duration(seconds: 2));
  return random.nextDouble();
  }

  print('one');                   // print instantly
  print(await getRandomValue());  // awaits for result
  print('two');                   // prints after result of last line

标签: flutterdartparse-platform

解决方案


推荐阅读