首页 > 解决方案 > FutureBuilder 不返回任何数据,但返回“对象实例”

问题描述

我目前正在开发一个基本上像数据库一样工作的应用程序。我希望它从我的 sqflite 数据库中获取数据并将其用作文本。出于某种原因,我只得到“对象索引”而不是正确的文本值。这是我在 database_helper.dart 中的代码:

  Future<Obj> getName(int id) async {
    final db = await database;
    var res = await  db.query(table, columns: [objName], where: "objId= ?", whereArgs: [id]);
    await print(res);         //returns right value
    return await res.isNotEmpty ? Fish.fromMap(res.first) : Null ;
  }
}

这是我的 FutureBuilder

FutureBuilder(
            future: dbHelper.getName(1),
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              if (snapshot.hasData) {
                return ListTile(
                    leading: Icon(Icons.message),
                    title: Text('${snapshot.data}'),
                    subtitle: Text(""),
                    onTap: () {
                      Navigator.push(
                        context,
                        MaterialPageRoute(builder: (context) => NextPage()),
                      );
                    }
                    );
            }
              return Container();
            },
          ),

我觉得我什么都试过了。直接从 database_helper.dart 打印 res 会得到正确的结果。我想要一些小费!提前致谢!

标签: fluttersqflite

解决方案


FutureBuilder 工作正常并且正在返回数据。您从 getName 未来返回了一个 Fish 对象。 snapshot.data已返回一个 Fish 对象。要显示任何属性,您可以使用 Fish Model 的 snapshot.data.propertyName。


推荐阅读