Flutter ML Kit如何使用
我在Flutter项目中想集成Google的ML Kit,但不太清楚具体步骤。请问如何正确添加依赖并配置ML Kit?是否需要额外安装NDK或其他工具?官方文档提到的核心功能(如文字识别、人脸检测)在Flutter中该如何调用?有没有完整的示例代码可以参考?另外,这个插件在iOS和Android上的兼容性如何?
2 回复
Flutter ML Kit 通过 google_ml_kit 插件使用。安装后,导入包并调用相应 API,如文本识别、人脸检测等。支持图像和实时摄像头输入,需配置 Android 和 iOS 权限。
更多关于Flutter ML Kit如何使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
Flutter ML Kit 主要通过 google_ml_kit 这个第三方包实现,它封装了原生 Android 和 iOS 的 ML Kit 功能。以下是基本使用方法:
1. 安装配置
在 pubspec.yaml 中添加依赖:
dependencies:
google_ml_kit: ^x.x.x
iOS 需要在 Info.plist 中添加相机权限:
<key>NSCameraUsageDescription</key>
<string>需要相机权限进行图像识别</string>
2. 常用功能示例
文本识别
import 'package:google_ml_kit/google_ml_kit.dart';
final textRecognizer = TextRecognizer();
final inputImage = InputImage.fromFilePath(imagePath);
try {
final recognisedText = await textRecognizer.processImage(inputImage);
String text = recognisedText.text;
print('识别结果: $text');
} finally {
textRecognizer.close();
}
人脸检测
final faceDetector = FaceDetector(
options: FaceDetectorOptions(
enableContours: true,
enableLandmarks: true,
)
);
final faces = await faceDetector.processImage(inputImage);
for (Face face in faces) {
print('检测到人脸: ${face.boundingBox}');
}
条码扫描
final barcodeScanner = BarcodeScanner();
final barcodes = await barcodeScanner.processImage(inputImage);
for (Barcode barcode in barcodes) {
print('条码内容: ${barcode.displayValue}');
}
3. 使用相机实时检测
结合 camera 包实现实时检测:
import 'package:camera/camera.dart';
// 初始化相机
final cameras = await availableCameras();
final cameraController = CameraController(
cameras[0],
ResolutionPreset.medium,
);
// 处理每一帧
cameraController.startImageStream((CameraImage image) async {
final inputImage = InputImage.fromBytes(
bytes: image.planes[0].bytes,
inputImageData: InputImageData(
size: Size(image.width.toDouble(), image.height.toDouble()),
imageRotation: InputImageRotation.rotation0deg,
format: InputImageFormat.nv21,
planeData: image.planes.map((plane) {
return InputImagePlaneMetadata(
bytesPerRow: plane.bytesPerRow,
height: plane.height,
width: plane.width,
);
}).toList(),
),
);
// 进行识别处理
final text = await textRecognizer.processImage(inputImage);
});
注意事项
- 不同功能需要不同的模型,首次使用会自动下载
- 考虑性能影响,及时关闭检测器
- 测试不同设备的兼容性
- 处理权限请求和用户拒绝的情况
建议查看官方文档获取最新 API 和完整功能列表。

