首页 > 解决方案 > 如果语句在我的 Dart Flutter 代码中被注册为变量?我该如何改变?

问题描述

突出显示的文本给了我类似问题控制台中显示的错误。 在处理 if 语句时,我从未收到过这类问题,我想知道为什么它们没有注册为 if 语句。 在其中一个错误中说

图像中突出显示的文本给了我类似问题控制台中显示的错误。在处理 if 语句时,我从未收到过这类问题,我想知道为什么它们没有注册为 if 语句。在其中一个错误中,它说“如果已经定义”,但它不是变量。我该如何解决这个问题?它与异步功能有什么关系吗?我与这些斗争

我正在尝试为我计划在颤振应用程序中实施的地图请求用户位置数据,但它不起作用:/我无法解决的 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);

标签: flutterdartgeolocationdart-pubflutter-test

解决方案


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

例如,您可以这样做:

  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 不应该在代码块之外。你必须把它放在一个函数中。这就是解释你的错误。

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

编辑:仅供参考,颤振中不再需要“新”关键字。


推荐阅读