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

问题描述 投票:0回答:1

我一直在尝试从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语句,但还是不行!

flutter flutter-layout flutter-dependencies
1个回答
0
投票

改变这个方法。

EDIT

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;
  }
}

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 =[];
          });
        }
      }
© www.soinside.com 2019 - 2024. All rights reserved.