颤振:DioError [DioErrorType.response]:Http 状态错误 [400]

时间:2021-06-26 10:42:41

标签: flutter dio

我创建了一个登录表单,它从 api 获取凭据并且运行良好。我有两种类型的用户员工和经理。所以有两个仪表板。我将它们的类型存储在名为 Type 的数据库中,当我收到登录 api 的响应时,获取 Type 值并将其存储在类型变量中并检查它是否等于 Employee 将重定向到员工仪表板其他经理仪表板。

它也工作正常,我测试了 2 到 3 次,但是当我再次运行我的应用程序并以员工身份登录时,它会将我重定向到员工仪表板,但是当我尝试以经理身份登录时,它向我发送了这个 dio 400 错误。

我也进行了调试,我也在主体参数和数据中获取了值,但之后它会打印 400 错误。

当我在邮递员上运行登录 api 并传递经理凭据时,它也可以完美地工作。

这是我的登录功能


Future login() async {

    Dio dio=new Dio();
    var data={
      'username': user.username,
      'password': user.password,
      'date':formattedDate

      

    };
    await dio
    .post(localhostUrlLogin,data: json.encode(data)) // it prints error after this line
      .then((onResponse) async {
        SharedPreferences myPrefs=await SharedPreferences.getInstance();
        
        print(onResponse.data);
        print(onResponse.statusCode);
        
        String type=onResponse.data['User']['Type'];
        print(type);

        if(type=='Employee')
        {
          Navigator.push(
          context, new MaterialPageRoute(builder: (context) => Employee()));
        }
        else if(type=='Manager'){
          Navigator.push(
          context, new MaterialPageRoute(builder: (context) => Manager()));
        }
     
        
       
        myPrefs.setString('name',name );
        myPrefs.setString('email', email);
        myPrefs.setString('designation', designation);
        myPrefs.setString('accesstoken', token);
        myPrefs.setBool('timeinStatus', timeinstatus);
        myPrefs.setString('DOB', dob);
        
      }).catchError((onerror){
        print("error "+onerror.toString());
        showAlertDialog(context);
    });
  }

请帮忙,如何解决这个问题。

0 个答案:

没有答案