Flutter 语句是否在我的Dart FLATTER代码中注册为变量?我如何改变这个?

Flutter 语句是否在我的Dart FLATTER代码中注册为变量?我如何改变这个?,flutter,dart,geolocation,dart-pub,flutter-test,Flutter,Dart,Geolocation,Dart Pub,Flutter Test,图像中突出显示的文本给了我错误,就像我的问题控制台中显示的错误一样。我在处理if语句时从未遇到过此类问题,我想知道为什么它们没有注册为if语句。在其中一个错误中,它表示“if已经定义”,但它不是一个变量。我如何解决这个问题?它和异步函数有什么关系吗?我挣扎在这些问题上 我正试图为我计划在颤振应用程序中实现的地图请求用户位置数据,但它不起作用:/我的ifs有问题,我无法解决。 未来分配服务(位置loc)异步{ bool servicestatus=wait loc.servicenabled();

图像中突出显示的文本给了我错误,就像我的问题控制台中显示的错误一样。我在处理if语句时从未遇到过此类问题,我想知道为什么它们没有注册为if语句。在其中一个错误中,它表示“if已经定义”,但它不是一个变量。我如何解决这个问题?它和异步函数有什么关系吗?我挣扎在这些问题上

我正试图为我计划在颤振应用程序中实现的地图请求用户位置数据,但它不起作用:/我的ifs有问题,我无法解决。
未来分配服务(位置loc)异步{
bool servicestatus=wait loc.servicenabled();
返回服务状态;
}
未来分配权限(位置loc)异步{
返回等待loc.hasPermission();
}
未来分配位置(位置loc)异步{
返回等待loc.getLocation();
}
位置=新位置();
var _servicenabled=assignService(位置);
如果(_servicenabled!=true){
_serviceEnabled=分配服务(位置);
如果(!\u服务已启用){
返回;
}
}
var _permissiongrated=分配权限(位置);
如果(_permissiongrated==PermissionStatus.denied)异步{
_permissiongrated=等待位置。requestPermission();
如果(_permissiongrated!=PermissionStatus.grated){
返回;
}
}
var _locationData=分配位置(位置);
更新(上述代码之前的代码):

未来分配服务(位置loc)异步{
bool servicestatus=wait loc.servicenabled();
返回服务状态;
}
未来分配权限(位置loc)异步{
返回等待loc.hasPermission();
}
未来分配位置(位置loc)异步{
返回等待loc.getLocation();
}
位置=位置();
var _servicenabled=assignService(位置);
var _permissiongrated=分配权限(位置);

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

例如,您可以执行以下操作:

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

如果你需要更多的细节,请告诉我


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

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

例如,您可以执行以下操作:

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

如果你需要更多的细节,请告诉我


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

解决方案非常简单
如果
不能成为类的成员,如果
检查函数内部,则应执行

void doIfChecks(){
// if statements
}

希望这将对您有所帮助。

如果
不能成为类的成员,那么解决方案非常简单
,如果
检查函数内部,您应该执行

void doIfChecks(){
// if statements
}

希望这对您有所帮助。

非常感谢!if语句现在运行。但关于前两个if语句,我遇到了另一个问题。这是错误信息:“一个否定操作符必须有一个静态类型的bool”,我想这是因为它仍然是一个未来,但是我如何改变它呢?非常感谢!if语句现在运行。但关于前两个if语句,我遇到了另一个问题。这是错误信息:“一个否定操作符必须有一个静态类型的bool”,我想这是因为它仍然是一个未来,但是我如何改变它呢?非常感谢!if语句现在运行。但关于前两个if语句,我遇到了另一个问题。这是一条错误消息:“一个否定运算符必须有一个静态类型的bool”,我想这是因为它仍然是一个未来,但我如何改变它?你可以简单地在if语句中的future前面添加wait关键字。我如何将它添加到我的代码中?我也不需要一个异步的吗?而且我已经在等待函数中的值,为什么我需要做两次呢?再次感谢您在分配变量时使用wait _seriveEnabled和_permissionassigned,因此您不需要在if语句中使用wait,您需要使用wait方法返回future。非常感谢!if语句现在运行。但关于前两个if语句,我遇到了另一个问题。这是一条错误消息:“一个否定运算符必须有一个静态类型的bool”,我想这是因为它仍然是一个未来,但我如何改变它?你可以简单地在if语句中的future前面添加wait关键字。我如何将它添加到我的代码中?我也不需要一个异步的吗?而且我已经在等待函数中的值,为什么我需要做两次呢?再次感谢您在分配变量时使用wait _seriveEnabled和_permissionassigned,这样您就不需要在if语句中使用wait,而需要使用wait方法返回future。