json - Flutter Dart“期望一个标识符”和“期望找到')'”
问题描述
我正在尝试将对象与用户输入的字符串进行比较。该对象来自我映射的 json api 响应。我收到“如果”的错误:
MaterialButton(
child: Text("Connect"),
textColor: Colors.black,
onPressed: (){
fetchUser().then((user)=> (if user.username == username){
return Get.toNamed('/home');
});
},
color: Colors.grey[350],
)
这是功能
Future <User>fetchUser() async{
var authresponse = await http.get(userCall);
if (authresponse.statusCode == 200){
var jsondata = jsonDecode(authresponse.body);
final data = apicallFromJson(jsondata);
var user = data.subsonicResponse.user;
return user;
}else{
throw Exception("Unable to connect to server, try again");}
}
``
解决方案
看起来它是一个简单的语法错误。在这里,我更正了您的代码。
MaterialButton(
child: Text("Connect"),
textColor: Colors.black,
onPressed: (){
fetchUser().then((user){
if(user.username == username){
return Get.toNamed('/home');
}
});
},
color: Colors.grey[350],
)
编辑 1
深入研究,当创建 .then() 时,它是这样的,
onPressed: (){
fetchUser().then((value) => null);
},
这是你犯错的地方。=> 指向一个函数。所以当你把一个函数放在那里时,它应该只是这样的函数的名称,
onPressed: (){
fetchUser().then((value) => myfunctions());
},
但是如果你在那里写函数,它应该是这样的,
onPressed: (){
fetchUser().then((value){
//your code
});
},
推荐阅读
- r - 使用 MICE 导出多个估算对象
- vue.js - 无法在 el-step 中完成的两个连续步骤之间划线
- python - 从熊猫数据框中获取值时,删除每个值周围的 [''] 最有说服力的方法是什么?
- rxjs - RXJS:订阅在可观察的扫描运算符上添加一个新循环
- xml - 如何对一系列属性执行 Xpath 循环?
- javascript - Leaflet.js 透明水/海洋
- docker - 使用 Docker 在我的 VPS 上部署我的应用程序的最佳实践是什么?
- javascript - 如何使用 iv & key 和 cryptoswift 进行 AES 解密?
- android - 如何在基于 Xamarin.forms 的 webview 中使用 html5 视频标签?
- redirect - 在 Payara 4.1 或 5 服务器上重定向 POST url