void _checkbothloc(BuildContext context) {
if (_permissionGranted != PermissionStatus.GRANTED) {
_requestPermission();
} else if (_serviceEnabled != true) {
_requestService();
} else {
_takePicture(context);
}
}
为什么我必须运行3次_checkbothloc
才能达到** _takePicture(context)**
?
有人遇到同样的问题并找到了解决方案吗?
_takePicture
仅第三次到达,因为您正在使用else
/ else if
块。相反,您可能想在没有它们的情况下设置功能:
void _checkbothloc(BuildContext context) {
if (_permissionGranted != PermissionStatus.GRANTED) {
_requestPermission();
}
if (_serviceEnabled != true) {
_requestService();
}
_takePicture(context);
}
这样,条件不会相互依赖,并且无论如何都将运行。这也意味着 控制流语句 异步_takePicture
将始终运行,只是有时需要在之前请求许可,而有时需要在之前请求服务。Dart中有关
您还需要确保_requestPermission
和_requestService
不运行async
await
这些。Dart中有关[[异步编程的[Learn more]