Flutter应用运行报错:类型转换不兼容问题咨询
问题描述
在Android Studio模拟器中运行Flutter应用时触发类型转换异常,错误信息如下:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type '() => Map<String, dynamic>' is not a subtype of type 'Map<String, dynamic>' in type cast E/flutter ( 2949): #0 DatabaseUtils.getCloudQuestions (package:fragrancefinder/utils/DatabasUtils.dart:1282:50) E/flutter ( 2949): <asynchronous suspension>
执行命令:
flutter run
解决方案
这个错误的核心是你把一个返回Map的函数直接强转为Map<String, dynamic>类型,而非调用该函数获取返回值。
检查DatabasUtils.dart第1282行的代码,通常是以下两种情况:
- 引用了函数变量但未加括号调用,直接做类型转换:
修正为调用函数获取返回值:// 错误写法 var result = someFunction as Map<String, dynamic>;// 正确写法 var result = someFunction() as Map<String, dynamic>; - 从数据库、缓存或其他数据源中取出的是函数类型对象而非预计算的Map,此时需要确保存储的是Map实例,或者取出后执行该函数得到Map。
如果涉及云数据库(如Firebase)操作,需确认数据读取逻辑是否正确,确保拿到的是实际的Map数据而非函数引用。
内容的提问来源于stack exchange,提问作者Asha Chamy
相关产品推荐
相关产品推荐

