Flutter 颤振摄影机飞行“;相机预览“;当应用程序转到后台时冻结

Flutter 颤振摄影机飞行“;相机预览“;当应用程序转到后台时冻结,flutter,dart,camera,Flutter,Dart,Camera,您好,我使用Flatter cameraPreview拍摄照片,相机预览工作正常,但当相机屏幕转到背景时,当在该屏幕上恢复时,相机屏幕出现模糊,无法查看cameraPreview on Resume 霉菌代码: Future<void> _initializeCamera() async { final cameras = await availableCameras(); final firstCamera = cameras.first; _controller = Camera

您好,我使用Flatter cameraPreview拍摄照片,相机预览工作正常,但当相机屏幕转到背景时,当在该屏幕上恢复时,相机屏幕出现模糊,无法查看cameraPreview on Resume

霉菌代码:

Future<void> _initializeCamera() async {
final cameras = await availableCameras();
final firstCamera = cameras.first;
_controller = CameraController(firstCamera, ResolutionPreset.high);
_initializeControllerFuture = _controller.initialize();
if (!mounted) {
  return;
}
setState(() {
  isCameraReady = true;
});
}


@override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: Stack(children: <Widget>[
        FutureBuilder<void>(
          future: _initializeControllerFuture,
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              // If the Future is complete, display the preview.
              return CameraPreview(_controller);
            } else {
              return Center(
                  child:
                      CircularProgressIndicator()); // Otherwise, display a loading indicator.
            }
          },
        ),],),);
Future\u initializeCamera()异步{
最终摄像机=等待可用摄像机();
final firstCamera=cameras.first;
_控制器=摄像机控制器(第一个摄像机,分辨率预设。高);
_initializeControllerFuture=_controller.initialize();
如果(!已安装){
返回;
}
设置状态(){
isCameraReady=true;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
钥匙:_scaffoldKey,
主体:堆栈(子对象:[
未来建设者(
未来:_initializeControllerFuture,
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.done){
//如果未来已完成,则显示预览。
返回CameraPreview(_控制器);
}否则{
返回中心(
儿童:
CircularProgressIndicator());//否则,显示加载指示器。
}
},
),],),);
控制器被优先配置


我想知道为什么暂停时会处理相机预览。

问题通过初始化cameraPreview onResume解决

 @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.resumed) {
      _controller != null
          ? _initializeControllerFuture = _controller.initialize()
          : null; //on pause camera disposed so we need call again "issue is only for android"
    }
  }
恢复到页面时,_controller.initialize将调用,以便cameraPreview可以正常工作


这是因为cameraPreview在暂停时运行了很长时间,它将被释放..onAndroid我想是的..

到了您添加此方法的位置?您应该在类内重写didChangeAppLifecycleState,示例类CamerapPage扩展状态{}