You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FlutterFlow自定义组件中tflite_flutter包安装报错求助

FlutterFlow自定义组件中tflite_flutter依赖报错排查方案

我在FlutterFlow的自定义组件中按照官方文档添加了tflite_flutter:^0.10.2依赖,但持续出现自定义错误,错误截图如下:
错误截图

我的自定义组件代码如下:

// Automatic FlutterFlow imports
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; // Imports other custom widgets
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!

import 'package:tflite_flutter/tflite_flutter.dart';
import 'dart:typed_data';

class Model extends StatefulWidget {
  const Model({
    Key? key,
    this.width,
    this.height,
  }) : super(key: key);

  final double? width;
  final double? height;

  @override
  _ModelState createState() => _ModelState();
}

class _ModelState extends State<Model> {
  late Interpreter _interpreter;
  Uint8List outputData = Uint8List.fromList(List<int>.filled(256 * 256 * 3, 0));

  @override
  void initState() {
    super.initState();
    loadModel();
  }

  Future<void> loadModel() async {
    _interpreter = await Interpreter.fromAsset('model.tflite');
  }

  Future<Uint8List> makePrediction(List<double> inputData) async {
    // Run inference
    List<List<double>> outputData =
        List.filled(1, List.filled(256 * 256 * 3, 0.0));
    _interpreter.run(inputData, outputData);

    // Process output
    List<int> pixels = outputData[0].map((value) => value.round()).toList();

    // Convert pixels to Uint8List
    Uint8List imageBytes = Uint8List.fromList(pixels);

    return imageBytes;
  }

  @override
  Widget build(BuildContext context) {
    return Image.memory(outputData, width: 256, height: 256);
  }
}

可能的报错原因及解决方法

  • 模型文件配置问题

    • 确认model.tflite已通过FlutterFlow项目设置的「Assets」功能上传,且在pubspec.yaml中正确声明资源路径:
      assets:
        - assets/model.tflite
      
    • 手动修改项目文件结构无效,必须通过FlutterFlow官方渠道上传资源并同步。
  • 模型加载异常未处理
    当前代码未捕获模型加载失败的异常,一旦路径错误或文件损坏会直接触发崩溃,修改loadModel方法添加异常处理:

    Future<void> loadModel() async {
      try {
        _interpreter = await Interpreter.fromAsset('model.tflite');
      } catch (e) {
        print('模型加载失败:$e');
        // 可添加UI层面的错误提示逻辑
      }
    }
    
  • 张量维度不匹配
    检查TFLite模型实际的输入输出维度,当前代码假设输入为一维List<double>、输出为2562563的一维数组,若模型实际维度不符会报错。可在模型加载成功后打印张量信息排查:

    print('输入张量信息:${_interpreter.getInputTensors()}');
    print('输出张量信息:${_interpreter.getOutputTensors()}');
    

    根据打印结果调整makePrediction方法中的输入输出数组结构。

  • 依赖同步不彻底

    • 在FlutterFlow中添加依赖后,点击「Flutter Packages Get」按钮完成依赖同步,确保tflite_flutter已正确安装。
    • 尝试清理项目缓存后重新构建:右上角菜单→「Clean Project」→「Rebuild」。
  • 平台兼容性问题

    • tflite_flutter要求iOS最低版本≥11.0,Android最低SDK版本≥21,检查FlutterFlow项目的平台配置是否符合要求。

内容的提问来源于stack exchange,提问作者Ahan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:27:41