If 语句在我的 Dart Flutter 代码中被注册为变量?我该如何改变这个?

If statement is being registered as a variable in my Dart Flutter code? How do I change this?

图像中突出显示的文本给我错误,就像我的问题控制台中显示的那样。在处理 if 语句时,我从来没有收到过这类问题,我想知道为什么他们没有注册为 if 语句。在其中一个错误中它说 "if is already defined",但它不是变量。我该如何解决这个问题?它与异步函数有什么关系吗?我挣扎于这些

我正在尝试为我计划在 flutter 应用程序中实现的地图请求用户位置数据,但它不起作用:/我的 ifs 有问题,我无法解决。

Future<bool> assignService(Location loc) async {
  bool servicestatus = await loc.serviceEnabled();
  return servicestatus;
}

Future<PermissionStatus> assignPermission(Location loc) async {
  return await loc.hasPermission();
}

Future<LocationData> assignLocation(Location loc) async {
  return await loc.getLocation();
}

Location location = new Location();

var _serviceEnabled = assignService(location);

if (_serviceEnabled != true) {
  _serviceEnabled = assignService(location);
  if (!_serviceEnabled) {
    return;
  }
}

var _permissionGranted = assignPermission(location);

if (_permissionGranted == PermissionStatus.denied) async{
  _permissionGranted = await location.requestPermission();
  if (_permissionGranted != PermissionStatus.granted) {
    return;
  }
}

var _locationData = assignLocation(location);

更新(上面之前的代码):

  Future<bool> assignService(Location loc) async {
  bool servicestatus = await loc.serviceEnabled();
  return servicestatus;
}

Future<PermissionStatus> assignPermission(Location loc) async {
  return await loc.hasPermission();
}

Future<LocationData> assignLocation(Location loc) async {
  return await loc.getLocation();
}

Location location = Location();

var _serviceEnabled = assignService(location);

var _permissionGranted = assignPermission(location);

您在函数外编写了代码。 只有变量声明可以在函数外,而不是代码。

例如你可以这样做:

  void StartService() {
    if (_serviceEnabled != true) {
      _serviceEnabled = assignService(location);
      if (!_serviceEnabled) {
        return;
      }

    if (_permissionGranted == PermissionStatus.denied) async{
      _permissionGranted = await location.requestPermission();
      if (_permissionGranted != PermissionStatus.granted) {
        return;
      }
    }
  }

if 不应该在代码块之外。 你必须把它放在一个函数中。那就是解释你的错误。

如果您需要更多详细信息,请告诉我。

编辑:仅供参考,flutter 不再需要 "new" 关键字。

解决方案非常简单if 不能成为 class 的成员,您应该在函数内部进行 if 检查。

void doIfChecks(){
// if statements
}

希望对您有所帮助。