首页 > 解决方案 > 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");}
}
``

标签: jsonrestflutterdart

解决方案


看起来它是一个简单的语法错误。在这里,我更正了您的代码。

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
  });
},

推荐阅读