元素类型“Iterable”无法分配给列表类型“Widget”

2024-02-11

我正在使用 sqlite 制作一个应用程序,当我尝试将数据放入小部件中时,出现错误。 我正在遵循一个教程,它给了我这个错误:元素类型“Iterable”无法分配给列表类型“Widget”。

 FutureBuilder<List<Reminder>>(
          future: _reminders,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              _currentReminders = snapshot.data!;
              return ListView(children: [
                snapshot.data!.map<Widget>((reminder) {
                  return ReminderCard(
                      name: reminder.name, details: reminder.details);
                }).toList(),
  • 新的错误消息:元素类型“List”无法分配给列表类型“Widget”。dartlist_element_type_not_assignable

元素类型“List”无法分配给列表类型“Widget”。dartlist_element_type_not_assignable 可迭代映射(T 函数(提醒)f) 飞镖:核心 返回一个新的惰性 [Iterable],其中的元素是通过按迭代顺序在此 Iterable 的每个元素上调用 f 创建的。 此方法返回映射元素的视图。只要返回的 [Iterable] 没有被迭代,所提供的函数 [f] 就不会被调用。转换后的元素不会被缓存。对返回的 [Iterable] 进行多次迭代将在同一元素上多次调用提供的函数 [f]。 返回的可迭代对象上的方法允许省略对不需要结果的任何元素的 f 调用。例如,[elementAt] 只能调用 f 一次。 Reminder是数据库元素的类。

 Reminder(
      {this.id = 0,
      required this.name,
      required this.details,
      required this.save});

  factory Reminder.fromMap(Map<String, dynamic> json) => Reminder(
      id: json["id"],
      name: json["name"],
      details: json["details"],
      save: json["false"]);

  Map<String, dynamic> toMap() => {
        "id": id,
        "name": name,
        "details": details,
        "save": save,
      };
}

你能帮我解决这个问题吗?


  1. snapshot.data!.map<widget>- 我不希望这样widget是一个有效的类型,它应该是Widget.

  2. 如果您想使用.map在 ListView 子级中使用函数,您应该将映射结果(可迭代)转换为列表并使用展开运算符将此列表传播到子级中:

    ListView(children: [
      ...snapshot.data!.map<widget>((reminder) {
        return ReminderCard(
          name: reminder.name, details: reminder.details);
      }).toList(),
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

元素类型“Iterable”无法分配给列表类型“Widget” 的相关文章

随机推荐