从sqflite数据库获取所有数据的问题

时间:2020-05-15 15:10:05

标签: flutter flutter-layout flutter-dependencies

我一直在尝试从sqflite数据库中获取所有数据,当我尝试获取单个数据时,这完全可以正常工作:

Future<dynamic> getUser() async {
final db = await database;
var res = await db.query("files");
if (res.length == 0) {
  return null;
} else {
  var resMap = res[0];
  return resMap;
 }
}

但是当我尝试使用如下例所示的for循环获取所有数据时,会出现错误

Future<dynamic> getUser() async {
  final db = await database;
  var res = await db.query("files");
  var resMap;
  var count = res.length;
  if (count != 0) {
    for (int i = 0; i < count; i++) {
      resMap.add(res[i]);
    }
  }

  return resMap;
}

错误提示:

The method 'forEach' was called on null.
Receiver: null
Tried calling: forEach(Closure: (dynamic, dynamic) => Null)

我了解它说我没有数据, 而且我还尝试删除了if语句,但还是没有运气!

2 个答案:

答案 0 :(得分:0)

更改此方法:

编辑

Future<List<Map>> getUser() async {
  final db = await database;
  var res = await db.query("files");
  List<Map> resMap = [];
  if (res != null res.length > 0) {
    for (int i = 0; i < count; i++) {
      resMap.add(res[i]);
    }
    return resMap;
  } else
  {
    return null;
  }
}

答案 1 :(得分:0)

在您的小部件中尝试

      List<Map> newUser = [];

      @override
      void initState() {
        super.initState();
        getUser();
      }

      getUser() async {
        final _userData = await DBProvider.db.getUser();
        if(_userData != null ){
          setState(() {
            newUser = _userData;
          });
        } else{
          setState(() {
            newUser =[];
          });
        }
      }