Flutter调用takePicture报错:位置参数过多,预期0个找到1个如何解决?
报错原因
0.10.0及以上版本的Flutter camera插件对takePicture()方法做了API不兼容升级:该方法不再支持传入自定义存储路径作为位置参数,调用时无需传参,执行后会自动返回XFile类型的拍摄结果对象。
修复步骤
- 删除
takePicture()调用时传入的path参数,接收方法返回的XFile实例 - 调用
XFile实例的saveTo()方法,将拍摄的照片存储到你预先拼接好的目标路径
修正后完整代码
import 'package:camera/camera.dart'; void _takePicture() async { try { await _initializeControllerFuture; final tmpDirectory = await getTemporaryDirectory(); final filePath = '${DateTime.now().millisecondsSinceEpoch}.png'; final path = join(tmpDirectory.path, filePath); // 调整拍照逻辑 final XFile capturedImage = await _controller.takePicture(); await capturedImage.saveTo(path); widget.didProvideImagePath(path); } catch (e) { print(e); } }
内容的提问来源于stack exchange,提问作者gs97ahn
相关产品推荐
相关产品推荐

