Flutter 从本地数据库获取数据后获取null错误
我有一个数据库几乎没有配置文件信息,我想在登录后将它们加载到我的仪表板中。这是我在仪表板屏幕上的代码Flutter 从本地数据库获取数据后获取null错误,flutter,dart,sqflite,Flutter,Dart,Sqflite,我有一个数据库几乎没有配置文件信息,我想在登录后将它们加载到我的仪表板中。这是我在仪表板屏幕上的代码 class __DashboardPageState extends State<_DashboardPage> { UserClass userObject; var db; __DashboardPageState(){ getUserObj(); } void getUserObj() async{ db = new DatabaseHe
class __DashboardPageState extends State<_DashboardPage> {
UserClass userObject;
var db;
__DashboardPageState(){
getUserObj();
}
void getUserObj() async{
db = new DatabaseHelper();
userObject = await db.fetchUsers();
}
//-----------------
@override
Widget build(BuildContext context) {
getUserObj();
Container(
padding: const EdgeInsets.only(bottom: 8),
child: new Text(
"Welcome Back, "+ userObject.firstname,
style: TextStyle(
fontFamily: "Yorkten_ConMed",
fontSize: 14,
color: Color(0xffffffff),
),
),
)
class\uuu仪表板页面状态扩展状态{
用户类用户对象;
var-db;
__仪表板页面状态(){
getUserObj();
}
void getUserObj()异步{
db=新的DatabaseHelper();
userObject=await db.fetchUsers();
}
//-----------------
@凌驾
小部件构建(构建上下文){
getUserObj();
容器(
填充:仅限常量边集(底部:8),
儿童:新文本(
“欢迎回来,”+userObject.firstname,
样式:TextStyle(
fontFamily:“约克顿·康米德”,
尺寸:14,
颜色:颜色(0xFFFFFF),
),
),
)
对null调用了getter“firstname”。接收方:null已尝试
主叫:名字
在我的控制台和屏幕中将此作为错误显示为附加错误。我知道由于异步,它在绘制屏幕之前未初始化。但除了此之外,我不知道如何从db中提取和加载小部件中的数据。
您需要在加载数据时处理小部件的可见性
- 从数据库中提取数据后,请执行
,而不是使用构造函数加载数据setState
- 您可以在使用包加载数据时显示加载程序
- 您需要处理可能的空值
就像在你的例子中一样,很明显,
userObject
一开始会是空的,所以当你使用userObject
的属性时,可以这样使用:userObject?.firstname???-'
,这里如果userObject
或firstname
为空,那么返回'-'
,实际上,我想在屏幕关闭后重新加载屏幕数据是从本地数据库中提取的,我没有得到任何线索来确定数据何时加载到使用未来的BCO中