【发布时间】:2022-01-04 10:18:08
【问题描述】:
我正在开发一个 Flutter 应用程序,当我将它升级到 Flutter 2.0 时,开始出现一个新错误。 这是关于类型转换的错误,但我不确定为什么会发生,因为旧版本没有问题。 错误如下:
Dart Unhandled Exception: type 'List<dynamic>' is not a subtype of
type 'Iterable<Map<dynamic, dynamic>>' in type cast, stack trace: #0 UserModel._convertCartItems (package:test_app/model/user.dart:67:31)
E/flutter (30545): #1 new UserModel.fromSnapshot (package:test_app/model/user.dart:58:12)
E/flutter (30545): #2 UserServices.getUserById.<anonymous closure> (package:test_app/services/user.dart:33:26)
E/flutter (30545): <asynchronous suspension>
E/flutter (30545): #3 UserProvider._onStateChanged (package:test_app/provider/user.dart:125:20)
E/flutter (30545): <asynchronous suspension>
E/flutter (30545):
与之相关的代码是:
List<CartItemModel> _convertCartItems(List cart) {
List<CartItemModel> convertedCart = [];
for (Map cartItem in cart as Iterable<Map<dynamic, dynamic>>) {
convertedCart.add(CartItemModel.fromMap(cartItem));
}
return convertedCart;
}
我试图删除as Iterable<>,但应用程序只是渲染了一次并开始了一个新的错误。
【问题讨论】:
-
你不能在一个简单的
List<dynamic>上投射一个 'Iterable
标签: firebase flutter iterable typecast-operator