如何修复Flutter中‘Undefined name 'Tflite'’错误?
解决Flutter中Tflite未定义的错误
你遇到的Undefined name 'Tflite'错误,核心原因是导入的包和代码调用的API不匹配:你导入的是tflite_flutter包,但代码里用的是旧版tflite包的Tflite.loadModel方法,这两个包的API完全不一样,所以找不到这个类。
解决方案步骤:
替换模型加载代码
tflite_flutter不需要调用loadModel,而是通过Interpreter类直接加载模型。修改main函数里的模型加载部分:
保留原有的tflite_flutter导入,替换掉原来的await Tflite.loadModel(...)代码:// 替换原来的Tflite.loadModel代码块 late Interpreter interpreter; try { // 从assets加载模型 interpreter = await Interpreter.fromAsset('assets/model.tflite'); print('模型加载成功'); } catch (e) { print('模型加载失败: $e'); }如果需要读取标签文件,可添加以下方法并调用:
// 读取标签文件的工具方法 Future<List<String>> loadLabels() async { final labelContent = await rootBundle.loadString('assets/labels.txt'); return labelContent.split('\n').where((label) => label.isNotEmpty).toList(); } // 在main函数中调用 var labels = await loadLabels();确认资源配置
检查pubspec.yaml里是否正确声明了模型和标签文件:flutter: assets: - assets/model.tflite - assets/labels.txt验证Android配置
针对之前处理过的Android V2兼容问题,确保android/app/build.gradle配置符合要求:android { defaultConfig { minSdkVersion 21 // tflite_flutter要求最低SDK版本为21 } buildFeatures { viewBinding true // 若启用了Android V2视图绑定需保留 } }
完成以上修改后重新运行项目,即可解决Tflite未定义的错误。
内容的提问来源于stack exchange,提问作者Shiven Khurana
相关产品推荐
相关产品推荐

