无法从Cloud Firestore拉取字符串数组并存入Flutter List的问题
问题解决:Firestore数据转List的类型错误
错误根源
你代码里的toList是方法的引用,而非执行方法后的返回值。直接赋值方法对象会导致类型不匹配——({bool growable}) => List是方法类型,不是实际的List实例。
修正方案
有三种可行的修正方式,根据需求选择:
- 直接类型转换:Firestore返回的数组本身就是
List<dynamic>,直接强转即可:List<dynamic> listUsers = data['usersLiked'] as List<dynamic>; - 调用toList()方法:注意必须加括号执行方法,获取返回的List实例:
List<dynamic> listUsers = data['usersLiked'].toList(); - 转为指定类型列表:如果需要字符串列表,可进一步强转:
List<String> listUsers = (data['usersLiked'] as List<dynamic>).cast<String>();
完整修正后的代码片段
return ListView( children: snapshot.data!.docs .map((DocumentSnapshot document) { Map<String, dynamic> data = document.data()! as Map<String, dynamic>; // 替换为上述任意一种修正方式 List<String> listUsers = (data['usersLiked'] as List<dynamic>).cast<String>(); // 此处添加你的列表项构建逻辑 return Container(child: Text(listUsers.toString())); }) .toList(), // 注意map后必须调用toList(),转为ListView需要的Widget列表 );
内容的提问来源于stack exchange,提问作者TM Lynch
相关产品推荐
相关产品推荐

