我有一个按钮,在初次点击/点击/触摸时,它会发布到API,并根据身份验证返回true或false。
onPressed: ()=>{
Provider.of<Login>(context, listen: false).login()
.then((value) => {
if(value == true)
Navigator.pushReplacementNamed(context, '/home')
}),
},
Future<bool> login() async {
try{
var payload = jsonEncode({
'email': usrname,
'password': pswd
});
Map<String,dynamic> response = await fetch.post(url, body:payload, headers: {
'Accept':'application/json',
'content-type': 'application/json'
})
.then((value) => jsonDecode(value.body));
if(response['token'] != ''){
return true;
}
}
catch(e){
errorMsg = e.toString();
notifyListeners();
return false;
}
return false;
}
成功验证后,它不会按预期重定向到新屏幕。我错过了什么还是我的逻辑有缺陷?
wait
旨在中断流程,直到async
方法完成。然后
然而不会中断流程(意味着将执行下一条指令),但使您能够在异步方法完成时运行代码。
在代码中:
问题与您的login
方法有关。您使用了带有的
,您不需要同时使用两者。wait
,然后
Future<bool> login() async {
try{
var payload = jsonEncode({
'email': usrname,
'password': pswd
});
Map<String,dynamic> response = await fetch.post(url, body:payload, headers: {
'Accept':'application/json',
'content-type': 'application/json'
});
var decodedResponse = jsonDecode(response.body);
if(decodedResponse['token'] != ''){
return true;
}
}
catch(e){
errorMsg = e.toString();
notifyListeners();
return false;
}
return false;
}
您可以在SO问题中找到更多示例:
我在开发一个应用程序,我不能收到通知时,电话锁定的FCM。 我使用了firebase和Awesome通知插件来显示通知。 有人能帮帮我吗,我困在这里谢谢
Permission\u处理程序。飞奔 主要的飞奔 > 在应用程序开始时,我想请求存储权限我做了什么-创建类PermissionHandler并将其分配给属性 PermissionHandler()-有状态小部件,应在完成其业务逻辑后触发splashscreen 请求用户权限,直到用户授予它 在应用程序启动时一次性请求权限,如果接受,则加载启动屏幕,否则会弹出一个新对话框,将用户带到应用程序设置
我已经为MFA开发了一个自定义凭证提供程序,它运行良好。我通过调用REST API在GetSerialization()方法中执行额外的身份验证检查。现在,如果通过REST API成功验证,我允许用户登录。但是对于验证失败的情况,我想显示错误屏幕,就像一个默认的提供者在用户名或密码不正确的情况下显示的那样(有一个“确定”按钮)。我已经了解,如果登录失败,默认情况下,这是在ReportResult(
我使用pushNamed()从屏幕中获取返回数据,如下所示: 但代码有问题,这是完整的错误堆栈跟踪: 但以下代码正常工作:
我正在使用omniauth saml对Ruby on Rails应用程序上的用户进行身份验证。 身份验证一直运行良好,直到我们声明尝试与使用ADFS(Windows Active Directory)的公司合作。 我们的应用程序能够路由到ADFS登录屏幕,进行登录操作,当ADFS重定向回我们的应用程序时,我们会看到错误消息: 通过调试,我们可以看到omniauth saml生成了此消息。 通过挖掘
我在这里得到这个错误。并且,试图解决它。 > E/flatter(14838):[错误:flatter/lib/ui/ui_dart_state.cc(177)]未处理的异常:缺少PluginException(在通道插件上找不到方法getApplicationDocumentsDirectory.flatter.io/path_provider的实现)E/flatter(14838):\0 Ge