CastError(对空值使用的空检查运算符)FLUTTER ERROR



我是一个新的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();
}

最新更新