首页 > 解决方案 > 从本地数据库获取数据后出现空错误

问题描述

我有一个几乎没有个人资料信息的数据库,我想在登录后将它们加载到我的仪表板中。这是我的仪表板屏幕中的代码。

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),
        ),
      ),
    )

在 null 上调用了 getter 'firstname'。接收者:空尝试呼叫:名字

在我的控制台和屏幕中将此作为错误显示为附加错误。我知道由于异步它在屏幕被绘制之前没有被初始化。但除此之外,我不知道如何从 db 中提取和加载我的小部件中的数据。 在此处输入图像描述

标签: flutterdartsqflite

解决方案


您需要在加载数据时处理小部件的可见性。

就像你的情况一样,很明显userObject最初会是 null 所以当你使用userObject's 的属性时,像这样使用: userObject?.firstname ?? '-',如果或者userObject或者firstname是 null 然后返回'-'


推荐阅读