我创建了一个登录表单,它从 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);
});
}
请帮忙,如何解决这个问题。