【发布时间】:2022-08-02 16:48:55
【问题描述】:
由用户用户实例变量引起的 Dart Flutter 中空值错误的空值检查运算符。请帮助如何运行此代码以从 firebase 中获取价值。到目前为止,虚拟用户变量工作正常。 代码:
import \'package:flutter/material.dart\';
import \'package:get/get.dart\';
import \'../models/user.dart\';
import \'../services/database/users_database_services.dart\';
class UserController extends GetxController {
String userID = \'\';
bool previouslyLoggedIn = false;
UserDBService userDBService = UserDBService();
User? user;
setUser(String userID, String name, String phone, String email, int usercnic,
String profilePictureLink) {
this.userID = userID;
user = User(
email: email,
name: name,
phone: phone,
userID: userID,
usercnic: usercnic,
profilePictureLink: profilePictureLink,
);
}
updateDbUser() async {
bool isSuccess = await userDBService.addUser(userID, user!.name,
user!.phone, user!.email, user!.usercnic, user!.profilePictureLink);
if (isSuccess) {
Get.snackbar(
\"success\",
\"User details updated successfully\",
snackPosition: SnackPosition.BOTTOM,
);
} else {
Get.snackbar(
\"error\",
\"User details not updated successfully\",
snackPosition: SnackPosition.BOTTOM,
backgroundColor: Colors.red,
colorText: Colors.white,
duration: const Duration(seconds: 2),
);
}
}
}
-
你能在这里添加你的错误日志吗?
-
你确定你总是在
updateDbUser()之前调用setUser吗?错误与您调用user!有关,这是从可空 (User?) 到不可空 (User) 类型的强制转换。演员将进行运行时检查,以确保您的应用程序在user最终成为null时崩溃,即使您已承诺不会出现这种情况。