Flutter 为什么不让我用相机控制器拍照?

Flutter 为什么不让我用相机控制器拍照?,flutter,dart,android-camera,Flutter,Dart,Android Camera,我试图创建一个应用程序使用全屏相机。实时摄像机反馈与按钮反馈一样有效。似乎\u controller.takePicture(path)行有问题,因为“is INITIALIZED”print语句返回true。我将路径、路径提供程序和摄影机依赖项放在pubspec.yaml中 CameraController的初始化 cameras = await availableCameras(); var frontCamera = cameras.first; _controller

我试图创建一个应用程序使用全屏相机。实时摄像机反馈与按钮反馈一样有效。似乎
\u controller.takePicture(path)
行有问题,因为“is INITIALIZED”print语句返回true。我将路径、路径提供程序和摄影机依赖项放在pubspec.yaml中

CameraController的初始化

cameras = await availableCameras();
    var frontCamera = cameras.first;

    _controller = CameraController(frontCamera, ResolutionPreset.high);
    try {
      await _controller.initialize();
    } catch (e) {
    }
    print('Controller Is Init:' + _controller.value.isInitialized.toString());
    displayPreview();
错误:

E/MethodChannel#plugins.flutter.io/camera(28109): Failed to handle method call
E/MethodChannel#plugins.flutter.io/camera(28109): java.lang.NullPointerException
E/MethodChannel#plugins.flutter.io/camera(28109):   at java.io.File.<init>(File.java:283)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.plugins.camera.Camera.takePicture(Camera.java:227)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.plugins.camera.MethodCallHandlerImpl.onMethodCall(MethodCallHandlerImpl.java:77)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:664)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.os.Looper.loop(Looper.java:197)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.app.ActivityThread.main(ActivityThread.java:8125)
E/MethodChannel#plugins.flutter.io/camera(28109):   at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.flutter.io/camera(28109):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
E/MethodChannel#plugins.flutter.io/camera(28109):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
E/flutter (28109): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: type 'CameraException' is not a subtype of type 'String'
E/flutter (28109): #0      _VisualPageState.build.<anonymous closure> (package:ourearth2020/screens/VisualPage.dart:209:36)
E/flutter (28109): <asynchronous suspension>
E/flutter (28109): #1      _VisualPageState.build.<anonymous closure> (package:ourearth2020/screens/VisualPage.dart)
E/flutter (28109): #2      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
E/flutter (28109): #3      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
E/flutter (28109): #4      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
E/flutter (28109): #5      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
E/flutter (28109): #6      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
E/flutter (28109): #7      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)
E/flutter (28109): #8      PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
E/flutter (28109): #9      _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (28109): #10     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
E/flutter (28109): #11     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
E/flutter (28109): #12     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
E/flutter (28109): #13     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
E/flutter (28109): #14     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
E/flutter (28109): #15     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
E/flutter (28109): #16     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
E/flutter (28109): #17     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (28109): #18     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (28109): #19     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (28109): #20     _invoke1 (dart:ui/hooks.dart:283:10)
E/flutter (28109): #21     _dispatchPointerDataPacket (dart:ui/hooks.dart:192:5)
E/MethodChannel#plugins.flatter.io/camera(28109):无法处理方法调用
E/MethodChannel#plugins.flatter.io/camera(28109):java.lang.NullPointerException
E/MethodChannel#plugins.flatter.io/camera(28109):位于java.io.File.(File.java:283)
E/MethodChannel#plugins.flatter.io/camera(28109):at io.flatter.plugins.camera.camera.takePicture(camera.java:227)
E/MethodChannel#plugins.flatter.io/camera(28109):at io.flatter.plugins.camera.MethodCallHandlerImpl.onMethodCall(MethodCallHandlerImpl.java:77)
E/MethodChannel#plugins.flatter.io/camera(28109):在io.flatter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/MethodChannel#plugins.flatter.io/camera(28109):at-io.flatter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#plugins.flatter.io/camera(28109):at io.flatter.embedding.engine.flatterjni.handlePlatformMessage(flatterjni.java:664)
E/MethodChannel#plugins.flatter.io/camera(28109):位于android.os.MessageQueue.nativePollOnce(本机方法)
E/MethodChannel#plugins.flatter.io/camera(28109):位于android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#plugins.flatter.io/camera(28109):位于android.os.Looper.loop(Looper.java:197)
E/MethodChannel#plugins.flatter.io/camera(28109):位于android.app.ActivityThread.main(ActivityThread.java:8125)
E/MethodChannel#plugins.flatter.io/camera(28109):位于java.lang.reflect.Method.invoke(本机方法)
E/MethodChannel#plugins.flatter.io/camera(28109):位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
E/MethodChannel#plugins.flatter.io/camera(28109):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
E/flatter(28109):[错误:flatter/lib/ui/ui\u dart\u state.cc(166)]未处理的异常:类型“CameraException”不是类型“String”的子类型
E/颤振(28109):#0u VisualPageState.build。(包装:ourearth2020/screens/VisualPage.dart:209:36)
E/颤振(28109):
E/颤振(28109):#1 VisualPageState.build。(包装:ourearth2020/screens/VisualPage.dart)
E/flatter(28109):#2 GestureRecognitizer.invokeCallback(包:flatter/src/signatures/Recognitizer.dart:184:24)
E/flatter(28109):#3 TapGestureRecognitor.handleTapUp(软件包:flatter/src/signatures/tap.dart:524:11)
E/颤振(28109):#4 BaseTapgestureRecognitor.#检查(软件包:颤振/src/手势/tap.省道:284:5)
E/flatter(28109):#5 BaseTapgestureRecognitor.handlePrimaryPointer(包:flatter/src/signatures/tap.dart:219:7)
E/颤振(28109):#6 PrimaryPointerTestureRecognizer.handleEvent(包:颤振/src/手势/识别器。dart:477:9)
E/flatter(28109):#7点路由器。#调度(包:flatter/src/signatures/pointer#router。dart:78:12)
E/颤振(28109):#8点外部。#调度事件路线。(包装:颤振/src/signatures/pointer_router.省道:124:9)
E/flatter(28109):#9#LinkedHashMapMixin.forEach(dart:collection patch/compact#u hash.dart:377:8)
E/flatter(28109):#10点外部。#调度事件路由(包:flatter/src/signatures/pointer#路由器。dart:122:18)
E/flatter(28109):#11 PointerRouter.route(包:flatter/src/signatures/pointer_router.dart:108:7)
E/flatter(28109):#12 GestureBinding.handleEvent(包装:flatter/src/signatures/binding.dart:220:19)
E/flatter(28109):#13 GestureBinding.dispatchEvent(包:flatter/src/signatures/binding.dart:200:22)
电子/颤振(28109):#14手势绑定。#手持点事件(包装:颤振/src/手势/绑定。省道:158:7)
E/flatter(28109):#15个手势绑定。(u flushpointerreeventqueue(包装:flatter/src/signatures/binding.dart:104:7)
E/flatter(28109):#16个手势绑定。"handlepointerdata包(包:flatter/src/signatures/binding.dart:88:7)
E/颤振(28109):#17 35;根运行单位(dart:async/zone.dart:1206:13)
E/flatter(28109):#18 _CustomZone.runUnary(dart:async/zone.dart:1100:19)
E/flatter(28109):#19 _CustomZone.rununaryarcheed(dart:async/zone.dart:1005:7)
E/颤振(28109):#20 _调用1(省道:ui/挂钩。省道:283:10)
E/flatter(28109):#21 dispatchPointerDataPacket(dart:ui/hooks.dart:192:5)

这看起来像是您作为参数提供的
路径
不是
字符串
,而是
CameraException

要创建路径,您可以这样做(需要):


另外,我可以不保存路径,而是将其存储在一个文件中,然后显示它吗?
E/MethodChannel#plugins.flutter.io/camera(28109): Failed to handle method call
E/MethodChannel#plugins.flutter.io/camera(28109): java.lang.NullPointerException
E/MethodChannel#plugins.flutter.io/camera(28109):   at java.io.File.<init>(File.java:283)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.plugins.camera.Camera.takePicture(Camera.java:227)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.plugins.camera.MethodCallHandlerImpl.onMethodCall(MethodCallHandlerImpl.java:77)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#plugins.flutter.io/camera(28109):   at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:664)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.os.Looper.loop(Looper.java:197)
E/MethodChannel#plugins.flutter.io/camera(28109):   at android.app.ActivityThread.main(ActivityThread.java:8125)
E/MethodChannel#plugins.flutter.io/camera(28109):   at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.flutter.io/camera(28109):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
E/MethodChannel#plugins.flutter.io/camera(28109):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
E/flutter (28109): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: type 'CameraException' is not a subtype of type 'String'
E/flutter (28109): #0      _VisualPageState.build.<anonymous closure> (package:ourearth2020/screens/VisualPage.dart:209:36)
E/flutter (28109): <asynchronous suspension>
E/flutter (28109): #1      _VisualPageState.build.<anonymous closure> (package:ourearth2020/screens/VisualPage.dart)
E/flutter (28109): #2      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
E/flutter (28109): #3      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
E/flutter (28109): #4      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
E/flutter (28109): #5      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
E/flutter (28109): #6      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
E/flutter (28109): #7      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)
E/flutter (28109): #8      PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
E/flutter (28109): #9      _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (28109): #10     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
E/flutter (28109): #11     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
E/flutter (28109): #12     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
E/flutter (28109): #13     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
E/flutter (28109): #14     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
E/flutter (28109): #15     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
E/flutter (28109): #16     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
E/flutter (28109): #17     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (28109): #18     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (28109): #19     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (28109): #20     _invoke1 (dart:ui/hooks.dart:283:10)
E/flutter (28109): #21     _dispatchPointerDataPacket (dart:ui/hooks.dart:192:5)
final path = (await getTemporaryDirectory()).path + '${DateTime.now()}.png';