Я использую Sqflite для сохранения данных (например, имя человека). С помощью этой функции я получаю данные БД:
Future<List<Student>> getStudentList() async {
await openDb();
final List<Map<String, dynamic>> maps = await _database.query('student', orderBy: 'name ASC');
return List.generate(maps.length, (i) {
return Student(
id: maps[i]['id'], name: maps[i]['name']);
});
}
В начале я хочу добавить имена в БД в список.
@override
void initState() {
foo();
//userList.add(User('Test1', 'Test, false));
//userList.add(User('test2', 'test', false));
userList
.sort((a, b) => a.name.toLowerCase().compareTo(b.name.toLowerCase()));
filterList();
searchController.addListener(() {
filterList();
});
super.initState();
}
Вот как я определил foo (), где я хочу получить данные из БД:
Future foo() async{
studlist = await dbmanager.getStudentList();
var tl = studlist.length;
for (var i = 0; i < tl; i++) {
userList.add(User(studlist[i].name, 'Test', false));
// print('${studlist[i].name}');
// print('$i');
}
}
Проблема в том, что эта функция ничего не сохраняет в списке. Если я использую в void initState()
этот тестовый код вместо foo (), он работает:
userList.add(User('Test1', 'Test, false));
userList.add(User('test2', 'test', false));
Так что с foo()
что-то не так. Я также добавил print('${studlist[i].name}'); print('$i');
в for для l oop, чтобы проверить, работает ли studlist[i]
, и он напечатал каждое имя.
Спасибо за вашу помощь!