为什么我需要多次运行带有if语句的函数才能到达其他语句?

问题描述 投票:0回答:1
void _checkbothloc(BuildContext context) {
  if (_permissionGranted != PermissionStatus.GRANTED) {
    _requestPermission();
  } else if (_serviceEnabled != true) {
    _requestService();
  } else {
    _takePicture(context);
  }
}

为什么我必须运行3次_checkbothloc才能达到** _takePicture(context)**

有人遇到同样的问题并找到了解决方案吗?

flutter
1个回答
0
投票

_takePicture仅第三次到达,因为您正在使用else / else if块。相反,您可能想在没有它们的情况下设置功能:

void _checkbothloc(BuildContext context) {
  if (_permissionGranted != PermissionStatus.GRANTED) {
    _requestPermission();
  }

  if (_serviceEnabled != true) {
    _requestService();
  }

  _takePicture(context);
}

这样,条件不会相互依赖,并且无论如何都将运行。这也意味着_takePicture将始终运行,只是有时需要在之前请求许可,而有时需要在之前请求服务。Dart中有关

控制流语句

的[Learn more] >>
您还需要确保_requestPermission_requestService不运行

异步

。如果是这种情况,请将您的函数标记为async

await这些。Dart中有关[[异步编程的[Learn more]
© www.soinside.com 2019 - 2024. All rights reserved.