大佬教程收集整理的这篇文章主要介绍了file – 在Flutter中保存照片(尤其是相机胶卷),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
saveToCameraRoll()
.
> Flutter camera建议使用path_provider
获取应用程序目录,但似乎没有获取相机卷目录路径的选项.
>我在CameraController.capture上遇到异常
相关的变化(只有相关的变化,以差异的形式)在这里:@L_944_7@
我的整个main.dart在下面是为了方便repro(搜索问题:查找相关部分):
import 'dart:async'; import 'dart:io'; import 'package:Flutter/material.dart'; import 'package:camera/camera.dart'; import 'package:Flutter/services.dart'; import 'package:path_provider/path_provider.dart'; List<CameraDescription> cameras; Future<Null> main() async { SystemChrome.setPreferredOrientations([ DeviceOrientation.porTraitUp,DeviceOrientation.porTraitDown ]); cameras = await availableCameras(); runApp(new CameraApp()); } class CameraApp extends StatefulWidget { @override _CameraAppState createState() => new _CameraAppState(); } class _CameraAppState extends State<CameraApp> { String _appdirectoryPath; CameraController controller; Future<void> _requestappdirectory() async { // QUESTION: `path_provider` doesn't have getCameraRollDirectory() Directory _appdirectory = await getApplicationDocumentsDirectory(); setState(() { _appdirectoryPath = _appdirectory.path; }); } @override void initState() { super.initState(); _requestappdirectory(); controller = new CameraController(cameras[0],ResolutionPreset.medium); controller.initialize().then((_) { if (!mounted) { return; } setState(() {}); }); } @override void dispose() { controller?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { if (!controller.value.initialized) { return new Container(); } return new MaterialApp( title: 'Flutter Demo',theme: new ThemeData( priMarySwatch: Colors.red,),home: new Scaffold( body: new Center( child: new AspectRatio( aspectRatio: controller.value.aspectRatio,child: new CameraPreview(controller),floaTingActionButton: new FloaTingActionButton( tooltip: 'Increment',child: new Icon(Icons.camera),onPressed: () { print('capturing'); print(_appdirectoryPath); // QUESTION: this errors out controller.capture(_appdirectoryPath); },floaTingActionButtonLOCATIOn: FloaTingActionButtonLOCATIOn.centerFloat,); } }
日志信息如下:
I/Flutter ( 5471): capturing I/Flutter ( 5471): /data/user/0/com.example.mycameraapp/app_Flutter W/LegacyrequestMapper( 5471): convertrequestMetadata - control.awbRegions setTing is not supported,ignoring value W/LegacyrequestMapper( 5471): Only received metering rectangles with weight 0. W/LegacyrequestMapper( 5471): Only received metering rectangles with weight 0. I/requestThread-0( 5471): Received jpeg. I/requestThread-0( 5471): Producing jpeg buffer... W/LegacyrequestMapper( 5471): convertrequestMetadata - control.awbRegions setTing is not supported,ignoring value W/LegacyrequestMapper( 5471): Only received metering rectangles with weight 0. W/LegacyrequestMapper( 5471): Only received metering rectangles with weight 0. E/Flutter ( 5471): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception: E/Flutter ( 5471): CameraException(IOError,Failed saving imagE) E/Flutter ( 5471): #0 CameraController.capture (package:camera/camera.dart:234:7) E/Flutter ( 5471): <asynchronous suspension> E/Flutter ( 5471): #1 _CameraAppState.build.<anonymous closure> (file:///Users/briankung/workspace/mobile/Flutter/my_camera_app/lib/main.dart:84:24) E/Flutter ( 5471): #2 _InkResponseState._handleTap (package:Flutter/src/material/ink_well.dart:478:14) E/Flutter ( 5471): #3 _InkResponseState.build.<anonymous closure> (package:Flutter/src/material/ink_well.dart:530:30) E/Flutter ( 5471): #4 GestureRecognizer.invokeCallBACk (package:Flutter/src/gestures/recognizer.dart:102:24) E/Flutter ( 5471): #5 TapGestureRecognizer._checkUp (package:Flutter/src/gestures/tap.dart:161:9) E/Flutter ( 5471): #6 TapGestureRecognizer.acceptGesture (package:Flutter/src/gestures/tap.dart:123:7) E/Flutter ( 5471): #7 GestureArenaManager.sweep (package:Flutter/src/gestures/arena.dart:156:27) E/Flutter ( 5471): #8 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:Flutter/src/gestures/binding.dart:147:20) E/Flutter ( 5471): #9 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:Flutter/src/gestures/binding.dart:121:22) E/Flutter ( 5471): #10 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:Flutter/src/gestures/binding.dart:101:7) E/Flutter ( 5471): #11 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:Flutter/src/gestures/binding.dart:64:7) E/Flutter ( 5471): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:Flutter/src/gestures/binding.dart:48:7) E/Flutter ( 5471): #13 _invoke1 (dart:ui/hooks.dart:134:13) E/Flutter ( 5471): #14 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:5) I/requestQueue( 5471): RepeaTing capture request cancelled.
谢谢!
忘记版本号:
$Flutter --version Flutter 0.2.8 • chAnnel beta • https://github.com/Flutter/Flutter.git Framework • revision b397406561 (10 days ago) • 2018-04-02 13:53:20 -0700 ENGIne • revision c903c217a1 Tools • Dart 2.0.0-dev.43.0.Flutter-52afcba357 // pubspec.yaml camera: dependency: "direct main" description: name: camera url: "https://pub.dartlang.org" source: hosted version: "0.1.2" path_provider: dependency: "direct main" description: name: path_provider url: "https://pub.dartlang.org" source: hosted version: "0.4.0"
以上是大佬教程为你收集整理的file – 在Flutter中保存照片(尤其是相机胶卷)全部内容,希望文章能够帮你解决file – 在Flutter中保存照片(尤其是相机胶卷)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。