Android Release APK的行为与Future类型的调试不同<;动态>;不是FutureOr的子类型<;回应>;错误

Android Release APK的行为与Future类型的调试不同<;动态>;不是FutureOr的子类型<;回应>;错误,android,flutter,Android,Flutter,我用bloc模式实现了一个简单的应用程序,带有一个登录屏幕。在android emulator或android studio中的我的android手机上以调试模式运行时,该应用程序运行良好。当我在代码上没有更改的情况下尝试发布apk时,我遇到了Future不是FutureOr的子类型的错误 下面是一个关于集团的逻辑方法: void submit() async{ _loginStateController.sink.add(LoginStateLoading()); User

我用bloc模式实现了一个简单的应用程序,带有一个登录屏幕。在android emulator或android studio中的我的android手机上以调试模式运行时,该应用程序运行良好。当我在代码上没有更改的情况下尝试发布apk时,我遇到了Future不是FutureOr的子类型的错误

下面是一个关于集团的逻辑方法:

 void submit() async{
    _loginStateController.sink.add(LoginStateLoading());

    User user = User();
    user.email = emailController.text;
    user.password = passwordController.text;

    String responseBody = await ApiClient.postUser(user, "/login").catchError( (error){
      developer.log("error_while_posting_user: " + error.toString());
      String errorMessage = error.toString();
      if(errorMessage == "missing email" || errorMessage == "missing password"){
        errorMessage = "Datos faltantes";
      }
      else if(errorMessage == "incorrect email or password"){
        errorMessage = "Correo o contraseña incorrecta";
      }
      else{
        errorMessage = "Error inesperado";
      }

      _loginStateController.sink.add( LoginStateError(errorMessage));
      return;
    });

    Map<String, dynamic> responseMap = json.decode(responseBody);

    Utils.saveLoginInfo(responseMap);

    _loginStateController.sink.add(LoginStateReady());

  }
void submit()异步{
_loginStateController.sink.add(LoginStateLoading());
User=User();
user.email=emailController.text;
user.password=passwordController.text;
String responseBody=wait ApiClient.positioner(用户,“/login”).catchError((错误){
developer.log(“发布用户时出错:+error.toString());
String errorMessage=error.toString();
如果(errorMessage==“缺少电子邮件”| | errorMessage==“缺少密码”){
errorMessage=“Datos faltantes”;
}
否则如果(errorMessage==“错误的电子邮件或密码”){
errorMessage=“Correo contraseña incorrecta”;
}
否则{
errorMessage=“Error inesperado”;
}
_loginStateController.sink.add(LoginStateError(errorMessage));
返回;
});
Map responseMap=json.decode(responseBody);
Utils.saveLoginInfo(responseMap);
_loginStateController.sink.add(LoginStateReady());
}
下面是发出http请求的代码:

static Future<String> postUser(User user, String path) async {
    Map<String, String> headers = Map();
    headers["content-type"] = "application/json";
    Map<String, dynamic> bodyMap = user.toJson();

    String body = jsonEncode(bodyMap);

    try {
      final response = await http.post(
          API_ENDPOINT + path, headers: headers, body: body).catchError( (error) {
        return Future.error(error);
      }).timeout(Duration(milliseconds: 10000));

      if (response == null) {
        return Future.error("request error");
      }

      if (response.statusCode != 200) {
        String errorMessage = jsonDecode(response.body)["message"];
        return Future.error(errorMessage);
      }

      return response.body;
    }

    catch (Exception) {
      return Future.error(Exception.toString());
    }

    return "";
  }
静态未来姿态(用户,字符串路径)异步{
Map headers=Map();
标题[“内容类型”]=“应用程序/json”;
Map bodyMap=user.toJson();
字符串body=jsonEncode(bodyMap);
试一试{
最终响应=等待http.post(
API_端点+路径,标题:标题,正文:正文)。catchError((错误){
返回Future.error(错误);
}).超时(持续时间(毫秒:10000));
如果(响应==null){
返回Future.error(“请求错误”);
}
如果(response.statusCode!=200){
String errorMessage=jsonDecode(response.body)[“message”];
返回Future.error(错误消息);
}
返回响应.body;
}
捕获(例外){
返回Future.error(Exception.toString());
}
返回“”;
}

我已经尝试了几次flifter clean,但仍然出现错误。

您是否在AndroidManifest.xml中检查了您是否具有internet权限

您可以尝试在AndroidManifest.xml中添加这一行吗