In my Widget which calls the ReaderWidget i have a logon page Button. When the user clicks this button, he is navigated to a logon oage. After Logging in the user can create a qr-code. But when he navigates back, i don't want to call the login page. Instead i want the user to go back to the Reader Widget page. So i use Navigator.popUntil(context, "QRCodeScanner"); . But then the ReaderWidget closes the camera connection. See log below:
D/EGL_emulation( 6219): app_time_stats: avg=221.88ms min=14.72ms max=4123.80ms count=20
I/flutter ( 6219): Zurück1
I/flutter ( 6219): Activating QR-Code Scanner
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=270, isOppositeFacing=false, result=270
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/DynamicRangeResolver( 6219): Resolved dynamic range for use case androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9 to no compatible HDR dynamic ranges.
D/DynamicRangeResolver( 6219): DynamicRange@7a293e7{encoding=UNSPECIFIED, bitDepth=0}
D/DynamicRangeResolver( 6219): ->
D/DynamicRangeResolver( 6219): DynamicRange@1500da6{encoding=SDR, bitDepth=8}
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/DeferrableSurface( 6219): Surface created[total_surfaces=1, used_surfaces=0](androidx.camera.core.processing.SurfaceEdge$SettableSurface@b0a04e1}
D/DeferrableSurface( 6219): Surface created[total_surfaces=2, used_surfaces=0](androidx.camera.core.SurfaceRequest$2@5c10e1d}
D/DeferrableSurface( 6219): New surface in use[total_surfaces=2, used_surfaces=1](androidx.camera.core.SurfaceRequest$2@5c10e1d}
D/DeferrableSurface( 6219): use count+1, useCount=1 androidx.camera.core.SurfaceRequest$2@5c10e1d
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/ImageCapture( 6219): createPipeline(cameraId: 10, streamSpec: StreamSpec{resolution=1280x720, dynamicRange=DynamicRange@1500da6{encoding=SDR, bitDepth=8}, expectedFrameRateRange=[0, 0], implementationOptions=androidx.camera.camera2.impl.Camera2ImplConfig@7e01bde})
D/DeferrableSurface( 6219): Surface created[total_surfaces=3, used_surfaces=1](androidx.camera.core.impl.ImmediateSurface@e9db1bf}
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474 ACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/DeferrableSurface( 6219): Surface created[total_surfaces=4, used_surfaces=1](androidx.camera.core.impl.ImmediateSurface@854e3d5}
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423 ACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474 ACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208 INACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use cases [androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] now ATTACHED
D/UseCaseAttachState( 6219): All use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] for camera: 10
D/CameraOrientationUtil( 6219): getRelativeImageRotation: destRotationDegrees=0, sourceRotationDegrees=90, isOppositeFacing=true, result=90
D/UseCaseAttachState( 6219): Active and attached use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423] for camera: 10
I/flutter ( 6219): Neuer CameraController
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Resetting Capture Session
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Releasing session in state INITIALIZED
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Attempting to force open the camera.
D/CameraStateRegistry( 6219): tryOpenCamera(Camera@1a43955[id=10]) [Available Cameras: 1, Already Open: false (Previous state: CLOSED)] --> SUCCESS
D/CameraStateRegistry( 6219): Recalculating open cameras:
D/CameraStateRegistry( 6219): Camera State
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Camera@1a43955[id=10] OPENING
D/CameraStateRegistry( 6219): Camera@80b0012[id=1] UNKNOWN
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Open count: 1 (Max allowed: 1)
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Opening camera.
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Transitioning camera internal state: INITIALIZED --> OPENING
D/CameraStateMachine( 6219): New public camera state CameraState{type=OPENING, error=null} from OPENING and null
D/CameraStateMachine( 6219): Publishing new public camera state CameraState{type=OPENING, error=null}
D/UseCaseAttachState( 6219): All use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423 ACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474 ACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208 INACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use case androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208 ACTIVE
D/UseCaseAttachState( 6219): Active and attached use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} CameraDevice.onOpened()
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Transitioning camera internal state: OPENING --> OPENED
D/CameraStateRegistry( 6219): Recalculating open cameras:
D/CameraStateRegistry( 6219): Camera State
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Camera@1a43955[id=10] OPEN
D/CameraStateRegistry( 6219): Camera@80b0012[id=1] UNKNOWN
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Open count: 1 (Max allowed: 1)
D/CameraStateMachine( 6219): New public camera state CameraState{type=OPEN, error=null} from OPEN and null
D/CameraStateMachine( 6219): Publishing new public camera state CameraState{type=OPEN, error=null}
D/UseCaseAttachState( 6219): All use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] for camera: 10
D/UseCaseAttachState( 6219): Active and attached use case: [androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] for camera: 10
D/SyncCaptureSessionBase( 6219): [androidx.camera.camera2.internal.SynchronizedCaptureSessionBaseImpl@4f0b5] getSurface...done
D/CaptureSession( 6219): Opening capture session.
D/DeferrableSurface( 6219): use count+1, useCount=2 androidx.camera.core.SurfaceRequest$2@5c10e1d
D/DeferrableSurface( 6219): New surface in use[total_surfaces=4, used_surfaces=2](androidx.camera.core.impl.ImmediateSurface@e9db1bf}
D/DeferrableSurface( 6219): use count+1, useCount=1 androidx.camera.core.impl.ImmediateSurface@e9db1bf
D/DeferrableSurface( 6219): New surface in use[total_surfaces=4, used_surfaces=3](androidx.camera.core.impl.ImmediateSurface@854e3d5}
D/DeferrableSurface( 6219): use count+1, useCount=1 androidx.camera.core.impl.ImmediateSurface@854e3d5
D/CaptureSession( 6219): Attempting to send capture request onConfigured
D/CaptureSession( 6219): Issuing request for session.
D/Camera2CaptureRequestBuilder( 6219): createCaptureRequest
D/CaptureSession( 6219): CameraCaptureSession.onConfigured() mState=OPENED
D/CaptureSession( 6219): CameraCaptureSession.onReady() OPENED
I/BpBinder( 6219): onLastStrongRef automatically unlinking death recipients:
W/WindowOnBackDispatcher( 6219): sendCancelIfRunning: isInProgress=falsecallback=io.flutter.embedding.android.FlutterActivity$1@a0c9fce
D/DeferrableSurface( 6219): surface closed, useCount=2 closed=true androidx.camera.core.SurfaceRequest$2@5c10e1d
D/DeferrableSurface( 6219): surface closed, useCount=0 closed=true androidx.camera.core.processing.SurfaceEdge$SettableSurface@b0a04e1
D/DeferrableSurface( 6219): Surface terminated[total_surfaces=3, used_surfaces=3](androidx.camera.core.processing.SurfaceEdge$SettableSurface@b0a04e1}
D/DeferrableSurface( 6219): use count-1, useCount=1 closed=true androidx.camera.core.SurfaceRequest$2@5c10e1d
E/BufferQueueProducer( 6219): [SurfaceTexture-0-6219-89](id:184b00000166,api:4,p:452,c:6219) dequeueBuffer: BufferQueue has been abandoned
D/ImageCapture( 6219): clearPipeline
D/DeferrableSurface( 6219): surface closed, useCount=1 closed=true androidx.camera.core.impl.ImmediateSurface@e9db1bf
D/DeferrableSurface( 6219): surface closed, useCount=1 closed=true androidx.camera.core.impl.ImmediateSurface@854e3d5
E/BufferQueueProducer( 6219): [SurfaceTexture-0-6219-89](id:184b00000166,api:4,p:452,c:6219) queueBuffer: BufferQueue has been abandoned
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Use cases [androidx.camera.core.Preview-a8afd12a-b3eb-4d80-bd57-50c716ebbbb9161342423, androidx.camera.core.ImageCapture-22641aed-4ff6-4a50-9a51-b443966d0ef4116597474, androidx.camera.core.ImageAnalysis-5e05d8e9-1bc6-4004-a50e-8edb8e44f702127228208] now DETACHED for camera
D/UseCaseAttachState( 6219): All use case: [] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Resetting Capture Session
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Releasing session in state OPENED
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Closing camera.
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Transitioning camera internal state: OPENED --> CLOSING
D/CameraStateRegistry( 6219): Recalculating open cameras:
D/CameraStateRegistry( 6219): Camera State
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Camera@1a43955[id=10] CLOSING
D/CameraStateRegistry( 6219): Camera@80b0012[id=1] UNKNOWN
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Open count: 1 (Max allowed: 1)
D/CameraStateMachine( 6219): New public camera state CameraState{type=CLOSING, error=null} from CLOSING and null
D/CameraStateMachine( 6219): Publishing new public camera state CameraState{type=CLOSING, error=null}
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Resetting Capture Session
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Releasing session in state CLOSING
D/CaptureSession( 6219): onSessionFinished()
E/BufferQueueProducer( 6219): [SurfaceTexture-0-6219-89](id:184b00000166,api:4,p:452,c:6219) queueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer( 6219): [SurfaceTexture-0-6219-89](id:184b00000166,api:4,p:452,c:6219) cancelBuffer: BufferQueue has been abandoned
E/BufferQueueProducer( 6219): [SurfaceTexture-0-6219-89](id:184b00000166,api:4,p:452,c:6219) cancelBuffer: BufferQueue has been abandoned
D/UseCaseAttachState( 6219): Active and attached use case: [] for camera: 10
D/DeferrableSurface( 6219): use count-1, useCount=0 closed=true androidx.camera.core.SurfaceRequest$2@5c10e1d
D/DeferrableSurface( 6219): Surface no longer in use[total_surfaces=3, used_surfaces=2](androidx.camera.core.SurfaceRequest$2@5c10e1d}
D/DeferrableSurface( 6219): Surface terminated[total_surfaces=2, used_surfaces=2](androidx.camera.core.SurfaceRequest$2@5c10e1d}
D/DeferrableSurface( 6219): use count-1, useCount=0 closed=true androidx.camera.core.impl.ImmediateSurface@e9db1bf
D/DeferrableSurface( 6219): Surface no longer in use[total_surfaces=2, used_surfaces=1](androidx.camera.core.impl.ImmediateSurface@e9db1bf}
D/DeferrableSurface( 6219): Surface terminated[total_surfaces=1, used_surfaces=1](androidx.camera.core.impl.ImmediateSurface@e9db1bf}
D/DeferrableSurface( 6219): use count-1, useCount=0 closed=true androidx.camera.core.impl.ImmediateSurface@854e3d5
D/DeferrableSurface( 6219): Surface no longer in use[total_surfaces=1, used_surfaces=0](androidx.camera.core.impl.ImmediateSurface@854e3d5}
D/DeferrableSurface( 6219): Surface terminated[total_surfaces=0, used_surfaces=0](androidx.camera.core.impl.ImmediateSurface@854e3d5}
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} CameraDevice.onClosed()
D/Camera2CameraImpl( 6219): {Camera@1a43955[id=10]} Transitioning camera internal state: CLOSING --> INITIALIZED
D/CameraStateRegistry( 6219): Recalculating open cameras:
D/CameraStateRegistry( 6219): Camera State
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Camera@1a43955[id=10] CLOSED
D/CameraStateRegistry( 6219): Camera@80b0012[id=1] UNKNOWN
D/CameraStateRegistry( 6219): -------------------------------------------------------------------
D/CameraStateRegistry( 6219): Open count: 0 (Max allowed: 1)
D/CameraStateMachine( 6219): New public camera state CameraState{type=CLOSED, error=null} from CLOSED and null
D/CameraStateMachine( 6219): Publishing new public camera state CameraState{type=CLOSED, error=null}
In my Widget which calls the ReaderWidget i have a logon page Button. When the user clicks this button, he is navigated to a logon oage. After Logging in the user can create a qr-code. But when he navigates back, i don't want to call the login page. Instead i want the user to go back to the Reader Widget page. So i use Navigator.popUntil(context, "QRCodeScanner"); . But then the ReaderWidget closes the camera connection. See log below: