flutter - 导航到新屏幕时应该如何暂停相机?
问题描述
我正在为 Flutter 应用程序创建条形码扫描仪功能。大部分工作都是由 FlutterFire 的优秀人员完成的,我使用的是他们在 github 上的示例,在这里可以找到。
我的问题:在找到条形码时离开此屏幕并在用户按下返回时返回而不离开相机扫描或在后台处于活动状态的最佳方式是什么?
编辑
问题在于暂停_camera.startImageStream
, 和ScannerUtils.detect(
函数。
我_initializeCamera
在等待 Navigator.push 后尝试调用该函数,但似乎在视图准备好之前没有完成初始化函数。
解决方案
在导航到新屏幕之前,我通过调用此函数解决了这个问题:
void closeCameraAndStream() async {
if (_camera.value.isStreamingImages) {
await _camera.stopImageStream();
}
await _camera.dispose();
setState(() {
_camera = null;
_scanResults = null;
});
}
另外,我在返回屏幕时重新初始化相机,使用这个:
Navigator.of(context)
.push(MaterialPageRoute(builder: (BuildContext routeContextcontext) => BarcodeResultScreen(barcodeValue)))
.then((value) {
_initializeCamera();
});
推荐阅读
- sql-server - 如何透视具有多个列值的 SQL Server 表?
- javascript - 您如何注释返回状态切片的函数的流类型?
- nfc - 提示文件从 NFC 标签下载到手机
- android - 如何从保存在 firebase 数据库中的分数继续游戏?安卓应用
- python - 对于大小为 100 的轴 0,索引超出范围
- forms - 在移动到下一个选项卡之前强制对“下一个”按钮进行引导验证
- r - R Google Compute Engine 创建集群错误
- angularjs - Typeform data-url中的AngularJS括号表示法
- javascript - 在浏览器滚动时更新进度条状态
- android - “Android Gradle 插件升级”后的错误