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中