firebase - 为什么在 firebase 连接期间 int map 操作出现错误?as String' 不是 'int' 类型的子类型
问题描述
在firebase连接期间,我得到一个错误类型'String'不是'int'类型的子类型
class _VeriTabaniState extends State<VeriTabani> {
@override
Widget build(BuildContext context) {
return _buildBody(context, sahteSnapshot);
}
Widget _buildBody(BuildContext context, List<Map> snapshot) {
return ListView(
padding: EdgeInsets.only(top: 25.0),
//buildListItem ztn bir liste, children içine alır direk
children:
//sahte datalardan gelen herşey için döndüreceğim
//buildListItem'ı creat method ile oluşturdum
snapshot
.map<Widget>((data) => _buildListItem(context, data))
.toList(),
);
}
_buildListItem(BuildContext context, Map data) {
//sahtelerden her gelen için yeni bir kayıt üretecek
final kayitWidget = Kayit.fromMap(data);
return Padding(
//biz bunlara tıklarız mıklarız, hangisinin olduğunu anlamak için key
key: ValueKey(kayitWidget.okulisim),
padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.2),
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent),
borderRadius: BorderRadius.circular(5.0)),
child: ListTile(
title: Text(kayitWidget.okulisim),
trailing: Text(kayitWidget.sayi.toString()),
//firebase'e yollayacağız
onTap: () => {},
),
),
);
}
}
//sahte veriler oluşturalım
final sahteSnapshot = [
{"okulisim": "Sau", "sayi": "1"},
{"okulisim": "Metu", "sayi": "2"},
{"okulisim": "Kou", "sayi": "3"},
{"okulisim": "Boun", "sayi": "4"},
];
class Kayit {
String okulisim;
String sayi;
DocumentReference reference;
//kayit icin bir constructer oluşturalım
//fb icin çok kullanılan bir yapısı var bunların
Kayit.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map["okulisim"] != null),
assert(map["sayi"] != null),
okulisim = map["okulisim"],
sayi = map["sayi"];
//dbdeki anlık değisimler
Kayit.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data(), reference: snapshot.reference);
@override
String toString() => "Kayıt<$okulisim : $sayi>";
}
实际上是我得到 int String 错误的地方:
Kayit.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map["okulisim"] != null),
assert(map["sayi"] != null),
okulisim = map["okulisim"],
sayi = map["sayi"];
当我将变量 int 设置为 String 时它会修复
class Kayit {
String okulisim;
String sayi;
DocumentReference reference;
//kayit icin bir constructer oluşturalım
//fb icin çok kullanılan bir yapısı var bunların
Kayit.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map["okulisim"] != null),
assert(map["sayi"] != null),
okulisim = map["okulisim"],
sayi = map["sayi"];
如何?
解决方案
String' 不是 'int' 类型的子类型
您正在String
从数据库中检索 a 并将其分配给 a int
,因此您会收到上述错误。要解决此问题,请将变量更改为类型String
或将其保存int
在数据库中:
final sahteSnapshot = [
{"okulisim": "Sau", "sayi": 1},
{"okulisim": "Metu", "sayi": 2},
{"okulisim": "Kou", "sayi": 3},
{"okulisim": "Boun", "sayi": 4},
];
推荐阅读
- python - NameError:未定义 Python 名称“BASE_DIR”如何修复?
- data-visualization - 顶部和底部的 Echarts 条形图轴标签
- mysql - 如何更新 NULL 外键并在引用相同键的另一个表中创建新行?
- cucumber - 如何在特定选择器中使用期望?
- javascript - 反应:无法在尚未安装的组件上调用 setState
- pdf - 这怎么可能?我试图从 PDF 复制文本它有效
- mysql - MySQL Workbench - 将记录集导出到外部文件 - SQL 插入包含空白表名
- android - 如何将变量/参数传递给android视图方法
- spring-integration - 在 AMQP 入站适配器中过滤掉 AMQP 消息的标头
- php - 我们可以按照 WordPress 编码标准在 VS Code 中设置 Intelephense 吗?