当前位置: 首页 > 知识库问答 >
问题:

将forEach循环转换为未来循环。颤振中的forEach环

百里默
2023-03-14

我尝试将一个. foreach循环转换为一个Future.for每个循环在flutter中等待循环。我想要循环的元素是Firebase实时数据库中的快照。

我的函数如下所示:

Future<User> getUserByUid(String uid) async {
    DataSnapshot dataSnapshot =
        await databaseRef.orderByChild("uid").equalTo(uid).once();

    List user = List();

    dataSnapshot.value.forEach((key, value) async {
      User entry = await User.fromJson(value);
      await entry.setId(key);

      user.add(entry);
    });

    if (user.isNotEmpty) {
      return user[0];
    } else {
      return null;
    }
  }

我尝试了不同的方法,但是我没有让函数工作。

第一次尝试:

Future<User> getUserByUid(String uid) async {
    DataSnapshot dataSnapshot =
        await databaseRef.orderByChild("uid").equalTo(uid).once();

    List user = List();

    await Future.forEach(dataSnapshot.value, (element) {
      print(element);
    });

    if (user.isNotEmpty) {
      return user[0];
    } else {
      return null;
    }
  }

错误:

未处理的异常:键入'_InternalLinkedHashMap

第二次尝试:

Future<User> getUserByUid(String uid) async {
    DataSnapshot dataSnapshot =
        await databaseRef.orderByChild("uid").equalTo(uid).once();

    List user = List();

    for (var u in dataSnapshot.value) {
      print(u);
    }

    if (user.isNotEmpty) {
      return user[0];
    } else {
      return null;
    }
  }

错误:

未处理的异常:键入'_InternalLinkedHashMap

在所有的尝试中,我都得到了相同的错误。但是。forEach上述示例有效。

额外的问题:在. foreach中,我也得到了key变量。这也可以在Future.for每个在某种程度上?

共有1个答案

长孙嘉容
2023-03-14

您试图在地图上循环,但是(正如错误所说)地图是不可迭代的。不过,您可以循环使用地图的键:

for (var key in dataSnapshot.value.keys) {
  print(dataSnapshot.value[key]);
}
 类似资料:
  • 将循环转换为时遇到问题。 方法返回 我尝试过,但需要等待将转换为并且我无法添加它。 我正在尝试下载大约15个报告异步,以等待所有的已经下载,然后将它们合并成一个PDF。 注意:我使用的是框架4.8.3

  • foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo

  • 除了前面介绍的几种循环语句外,C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下: foreach(数据类型 变量名 in 数组或集合对象){     语句块; } foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到 里定义的变量中,直到所有元素都成功取出后退出循环。 【示例】使用 foreach 循环

  • 本文向大家介绍C# Foreach循环,包括了C# Foreach循环的使用技巧和注意事项,需要的朋友参考一下 示例 foreach将迭代实现的类的任何对象IEnumerable(请注意IEnumerable<T>从其继承的对象)。此类对象包括一些内置对象,但不限于:List<T>,T[](任何类型的数组),Dictionary<TKey, TSource>以及诸如IQueryable和IColl

  • Perl 循环 Perl foreach 循环用于迭代一个列表或集合变量的值。 语法 语法格式如下所示: foreach var (list) { ... } 流程图 Perl 循环

  • 问题内容: 我本来打算通过 在。有几点我不了解。 迭代器函数的用途是什么?没有它,还有什么办法吗? 如下所示,键和值的意义是什么? PS: 我试图在不带参数的情况下运行此函数,但它不起作用。 这是我的: 我的档案: 另一个问题 :如果在控制台中出现条件并显示“ username is thomas”,为什么上面的功能没有打开? 问题答案: 问题1和2 因此,基本上,第一个参数是要迭代的对象。它可以