我的数据库几乎没有个人资料信息,我想在登录后将其加载到我的仪表板中。这是我的仪表板屏幕中的代码。
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),
),
),
)
getter'firstname'在null上被调用。接收者:null已尝试 呼叫:名字
在我的控制台和屏幕上将其作为错误获取,显示出类似附件的错误。我知道由于异步,它不会在绘制屏幕之前初始化。但是我不知道如何从数据库中提取和加载我的小部件中的数据。
答案 0 :(得分:0)
您需要在加载数据时处理窗口小部件的可见性。
setState
,而不是使用构造函数使用AfterLayout加载数据。就像您的情况一样,很明显userObject
最初将为null,因此,当您使用userObject
的属性时,使用的方式如下:userObject?.firstname ?? '-'
,此处为userObject
或firstname
为空,然后返回'-'