【发布时间】:2020-06-21 11:21:39
【问题描述】:
我想从 sqflite 数据库中获取价值到颤振中的列表。 这是我的模型类
class Task {
final int id;
final String title;
final String description;
final String dateTime;
Task({this.id, this.title, this.description, this.dateTime});
Map<String, dynamic> toMap() {
return {
'id':id,
'title': title,
'description': description,
'dateTime': dateTime,
};
}
这是用于插入和检索数据的 databaseHelper 类。
class DatabaseHelper {
DatabaseHelper._();
static final DatabaseHelper db = DatabaseHelper._();
Database _database;
Future<Database> get database async {
if (_database != null) return _database;
_database = await _createDatabase();
return _database;
}
Future<Database> _createDatabase() async {
return await openDatabase(join(await getDatabasesPath(), 'task.db'),
onCreate: (db, version) {
return db.execute(
"CREATE TABLE tasks(id INTEGER PRIMARY KEY AUTO_INCREMENT , title TEXT, description TEXT, dateTime TEXT)",
);
}, version: 1);
}
Future<List<Task>> tasks() async {
final Database db = await database;
final maps = await db.query('tasks');
return List.generate(maps.length, (i) {
return Task(
id: maps[i]['id'],
title: maps[i]['title'],
description: maps[i]['description'],
dateTime: maps[i]['dateTime']
);
});
}
Future<void> insertTask(Task task) async {
final db = await database;
await db.insert(
'tasks',
task.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
}
}
当我使用 print(await tasks()) 时,它会在控制台中显示 [Instance of 'Task', Instance of 'Task']。这是一个错误吗?我想知道如何使用 DatabaseHelper 类中的 task() 函数从数据库中获取值。
【问题讨论】:
-
不是bug
Instance of Task表示List 包含Task对象。