Flutter拍照函数takePicture路径参数报错:参数数量不符
问题解决:camera包takePicture参数错误
错误原因
你使用的是新版本的camera包,该版本的takePicture()方法已移除了位置参数(不再接受path参数),老版本的takePicture(String path)API已被废弃,所以传入path会触发"参数过多"的错误。
修复方案
适配新版本API,通过takePicture()返回的XFile对象来处理自定义保存路径:
void takePhoto(BuildContext context) async { final tempDir = await getTemporaryDirectory(); final targetPath = join(tempDir.path, "${DateTime.now()}.png"); // 调用无参takePicture获取拍摄的图片文件 final XFile picture = await _cameraController.takePicture(); // 将图片保存到指定路径 await picture.saveTo(targetPath); Navigator.push(context, MaterialPageRoute(builder: (builder)=>CameraViewPage())); }
补充说明
- 新版本
takePicture()默认会将图片临时存储在系统临时目录,若不需要自定义路径,直接使用返回的XFile即可访问图片。 - 若坚持使用老版本API,可以在
pubspec.yaml中指定camera包的旧版本(如camera: ^0.8.1+7),但不推荐,新版本修复了更多兼容性与稳定性问题。
内容的提问来源于stack exchange,提问作者Anuj Verma
相关产品推荐
相关产品推荐

