如何将一些旧的Flutter代码更新到最新版本



我有一个大约四年前开始和放弃的Flutter应用程序。该项目已经重新浮出水面,我一直在修复由于在那段时间内对Flutter进行的更新而产生的弃用项目。除了一个区域之外,我已经准备好开始测试了,那就是从Firebase实时数据库读取到一个列表。下面是出现错误的代码:

return await dbReference
.orderByChild(AppDatabase._speciesCommonName)
.startAt(prefix)
.endAt('$prefixuf8ff')
.once()
.then((DataSnapshot dataSnapshot) {
//
// Make sure we have data
//
if (dataSnapshot.value != null) {
dataSnapshot.value.forEach((key, value) {
String dbKey = key;
String commonName = value[AppDatabase._speciesCommonName];
Species obj = Species(dbKey: dbKey, commonName: commonName);
list.add(obj);
});
我得到的错误是:

参数类型'List Function(DataSnapshot)'不能分配给参数类型'FutureOr函数(DatabaseEvent)"。

我已经搜索和研究了这个代码和错误,然而,已经远离Flutter这些年我没能找出解决方案。

在上面的代码中也报告了第二个错误,但是,我希望如果初始错误被修复,那么这个错误也会修复:

没有为'Object'类型定义'forEach'方法。

如有任何意见,不胜感激。

in terminal

flutter pub upgrade --major-verions

然后尝试使当前代码适应新的更新;有时候,您需要更改整个包,因为其中一些包是打折的。

请提供更多代码。

赋值的结果是什么?什么时候叫?


对于forEach错误,您假设dataSnapshot.value将是List,但它不是,因此它不起作用。

最新更新