获取方法Future <t> flutter的结果

时间:2019-03-07 01:46:35

标签: asynchronous flutter future

我有方法

val listPairs = List(("a", "a"), ("b", "a"), ("d", "d"), ("a", "c"))

val sz = listPairs.size

for {
  i <- (0 until sz)
  j <- (0 until sz)
  if i != j && listPairs(i)._1 == listPairs(j)._2
} yield (i, j)
// res1: scala.collection.immutable.IndexedSeq[(Int, Int)] = Vector((0,1), (3,0), (3,1))

我希望能够通过执行以下操作在其他模块中调用它:

for {
  i <- (0 until sz)
  j <- (i+1 until sz)
  if listPairs(i)._1 == listPairs(j)._2
} yield (i, j)
// res2: scala.collection.immutable.IndexedSeq[(Int, Int)] = Vector((0,1))

我似乎无法弄清楚如何获取实际值,而不是无法找到存储该值的Future对象。例如,在C ++中,我可以执行Future<FirebaseUser> getCurrentUser() async { FirebaseUser user = await _firebaseAuth.currentUser(); return user; } ,它将阻塞并返回值给我。颤动有什么等效的吗?我是该语言的新手,已经搜索了数小时,似乎无法找到解决此确切问题的方法。

2 个答案:

答案 0 :(得分:1)

您还必须等待方法调用中的结果,如下所示:

FirebaseUser currentUser = await class.getCurrentUser();
if (currentUser != null) {
    // Do something
}

答案 1 :(得分:1)

从您的代码看来,您实际上只需要1个await

Future<FirebaseUser> getCurrentUser() async {
    return _firebaseAuth.currentUser();
}
if (await class.getCurrentUser() != null) {
    // Do something
}