我是一个新的flutter用户,所以这次我在使用API服务登录时遇到了问题,登录显示
_CastError (Null check operator used on a null value)
错误在于使用以下的源
Future<void> login(BuildContext context) async {
AppFocus.unfocus(context);
if (loginFormKey.currentState!.validate()) {
final LoginResponse? res = await apiRepository.login(
LoginRequest(
email: loginEmailController.text,
password: loginPasswordController.text,
),
);
final SharedPreferences prefs = Get.find<SharedPreferences>();
if (res!.accessToken.isNotEmpty) {
prefs.setString(StorageConstants.token, res.accessToken);
Get.toNamed(Routes.HOME);
Get.snackbar("Berhasil", "Selamat Berhasil Login");
} else {
Get.snackbar("title", "coab");
}
}
}
准确地说,错误出现在的这个部分
if (res!.accessToken.isNotEmpty)
final LoginResponse? res
您用?
声明,这意味着res
是可为null的值。
但if (res!.accessToken.isNotEmpty)
使用!
,也就是说,res是non-null
的值。那是抛出错误
尝试删除!
标记。
if (res?.accessToken.isNotEmpty) {
... rest of your code
或添加新的contidion
if( res != null) {
if (res!.accessToken.isNotEmpty){
... rest of your code
}
}
希望它能解决你的问题。如果出现任何错误,请随时发表评论
试试这个代码并测试它。
Future<void> login(BuildContext context) async {
if (loginFormKey.currentState?.validate() ?? false) {
/*
your API code
*/
if (res.accessToken?.isNotEmpty ?? false) {
/*
if accessToken found
*/
} else {
/*
if accessToken not found
*/
}
}
return Future.value();
}