我正在尝试用flatter和laravelapi构建一个应用程序。在我开始实现登录
功能之前,一切都很顺利。我收到此错误[error:flatter/lib/ui/ui\u dart\u state.cc(177)]未处理的异常:NoSuchMethodError:对null调用了getter“length”
var _userService = UserService();
var registeredUser = await _userService.login(user);
var result = json.decode(registeredUser.body);
print(result);
if(result['success']['result']== true){
SharedPreferences _prefs = await SharedPreferences.getInstance();
_prefs.setInt('userId', result['success']['user']['id']);
_prefs.setString('userName', result['success']['user']['name']);
_prefs.setString('userPhone', result['success']['user']['phone']);
_prefs.setString('userEmail', result['success']['user']['email']);
_prefs.setString('token', result['success']['token']);
// Timer(Duration(seconds: 2), () {
// Navigator.pop(context);
// Navigator.popAndPushNamed(context, DashboardScreen.id);
// });
Navigator.push(
context, MaterialPageRoute(builder: (context) => HomeScreen()));
} else {
displayToastMessage('Failed to login!', context);
}
}```
When I press `Login button` this is how I call the `login` function.
```onPressed: () {
if(!emailTextEditingController.text
.contains("@")) {
displayToastMessage(
"Not a valid email address", context);
}
else if(passwordTextEditingController.text.length < 6) {
displayToastMessage(
"Password must be at least 6 characters", context);
} else {
var user = User();
// user.name = nameTextEditingController.text;
user.email = emailTextEditingController.text;
// user.phone = phoneTextEditingController.text;
user.password = passwordTextEditingController.text;
_login(context, user);
}
},```
This is the UsersService Code for login
`login(User user) async {
return await _repository.httpPost('login', user.toJson());
}`
and `_repositpry` is the one sending request to the `api`
here is how it is implemented
` String _baseUrl = 'https://api.adikatour.com/api';
httpPost(String api, data) async {
return await http.post(_baseUrl + "/" + api, body: data);
}`
and here is the api code for login
` public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')->accessToken;
$success['name'] = $user->name;
$success['user'] = $user;
return response()->json(['success' => $success], $this->successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}`
can you please tell me why I am getting this error? thanks again!
最后,我解决了这个问题。这就是我如何构建我使用的模型。
class User {
int id;
String name;
String email;
String phone;
String password;
toJson(){
return {
'id' : id.toString(),
'name' : name,
'email' : email,
'phone' : phone,
'password' : password,
};
}
}
但在登录功能中,只设置了电子邮件和密码。由于我的服务器不允许phone
和name
字段为空值,因此我必须将这些字段转换为非空值。所以,我像这样转换了用户模型。然后就解决了。
class User {
int id;
String name;
String email;
String phone;
String password;
toJson(){
return {
'id' : id.toString(),
'name' : name.toString(),
'email' : email.toString(),
'phone' : phone.toString(),
'password' : password.toString(),
};
}
}
谢谢你们帮助我,我真的很感激。特别感谢@sajith lakmal
按下按钮试试这个:-
onPressed: () {
if(!emailTextEditingController.text
.contains("@")) {
displayToastMessage(
"Not a valid email address", context);
}
else if (passwordTextEditingController.text is String && ((passwordTextEditingController.text?.length) ?? 0) < 6) {
displayToastMessage(
"Password must be at least 6 characters", context);
}
else if (!(passwordTextEditingController.text is String)){
displayToastMessage(
"Password must not be empty", context);
}
else {
var user = User();
// user.name = nameTextEditingController.text;
user.email = emailTextEditingController.text;
// user.phone = phoneTextEditingController.text;
user.password = passwordTextEditingController.text;
_login(context, user);
}
},
你好,我是一个入门的flutter开发人员,我想用我的CloudFireStore数据库中的数据做一个列表。我不知道该怎么做。如果您对我的代码有任何帮助或建议,我们将不胜感激 这是正在出错的代码示例 这里有一条错误消息。如果有人能帮我解决这个问题我会从幸福中发疯
我有这个错误,我不明白我的错误在哪里 [错误:flatter/lib/ui/ui\u dart\u state.cc(166)]未处理的异常:NoSuchMethodError:对null调用了getter“output”。E/颤振(16491):接收器:空E/颤振(16491):尝试调用:输出 这个错误引用了这个函数,但是我没有错误语法 这就是我所说的 有人能帮忙吗!
当我将其更改为list时,出现以下错误: 这里是我的小部件构建: 对于API、模型和其他函数,您可以在未处理的异常中检查我的另一篇文章:键入“\u InternalLinkedHashMap”
有人能解决这个问题吗? E/flutter(6629):尝试呼叫: createUserSusEmailAndPassword(email:"nehalt88@gmail.com",密码:"123456")E/flutter(6629):#0Object.noSuchMethod(飞镖: core-patch/object_patch.dart:63: 5)E/flutter(6629):#1Re
在应用程序启动时获取此错误。最初我认为这是一个迁移到Android的问题,做了所有的步骤迁移到androidx支持库,但没有用。 在此处发布了Github问题 无法调试,因为我在主函数第一行的断点命中之前得到了这个错误。 错误 我的扑动医生 主要的飞奔
当程序出现错误或者异常时,我们一般会希望在开发时输出报错信息,在生产环境时隐藏详细的信息。 在 imi 中,提供了 Http 服务的错误异常默认处理器支持。 默认 Http 错误处理器:Imi\Server\Http\Error\JsonErrorHandler 指定默认处理器 配置文件中: return [ 'beans' => [ 'HttpErrorHan