sql - 元素类型'Iterable'不能分配给列表类型'Widget'
问题描述
我正在使用 sqlite 制作一个应用程序,当我尝试将数据放入小部件时,我遇到了一个错误。我正在关注一个教程,它给了我这个错误: 无法将元素类型“Iterable”分配给列表类型“小部件”。
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(),
- 新错误消息: 元素类型“列表”不能分配给列表类型“小部件”。dartlist_element_type_not_assignable
元素类型 'List' 不能分配给列表类型 'Widget'.dartlist_element_type_not_assignable Iterable map(T Function(Reminder) f) dart:core 返回一个新的惰性 [Iterable],其中包含通过在每个上调用 f 创建的元素此 Iterable 的元素按迭代顺序。此方法返回映射元素的视图。只要返回的 [Iterable] 没有被迭代,提供的函数 [f] 就不会被调用。转换后的元素不会被缓存。对返回的 [Iterable] 进行多次迭代将在同一个元素上多次调用提供的函数 [f]。返回的可迭代对象上的方法允许在不需要结果的任何元素上省略调用 f。例如,[elementAt] 可能只调用 f 一次。 Reminder是 DB 元素的类。
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,
};
}
你能帮我解决这个问题吗?
解决方案
snapshot.data!.map<widget>
- 我不认为这widget
是一个有效的类型,它应该是Widget
.如果要
.map
在 ListView 子项中使用该函数,则应将映射结果 - 可迭代 - 转换为列表并使用扩展运算符将此列表传播到子项中:ListView(children: [ ...snapshot.data!.map<widget>((reminder) { return ReminderCard( name: reminder.name, details: reminder.details); }).toList(),
推荐阅读
- python - 如何将二维列表写入文件
- python - 将数据存储到 SQL 不能使用我的 sql 连接器和 scrapy
- javascript - 如何防止 Electron 中的多个窗口实例?
- highcharts - 有没有办法让一列比其他列宽?
- postgresql - 使用 jdbc 模板从 Spring Boot 调用 postgres 存储过程
- python-3.x - 为什么 append() 不附加交换的列表。它正在附加原始字符串但打印交换列表
- javascript - 使用数组反应钩子 useState 导致缺少渲染调用
- javascript - 来自codeigniter中下拉选择的AJAX POST
- node.js - 抛出新的 mongoose.Error.MissingSchemaError(name); MissingSchemaError:尚未为模型“Comapign”注册架构
- django - 如何在 Django 表单中使用 BaseInlineFormSet?