Flutter 如何从未来获取价值<;列表>;飘飘然
我想从sqflite数据库中获取值,并将其保存到Flatter中的列表中。 这是我的模型课Flutter 如何从未来获取价值<;列表>;飘飘然,flutter,sqflite,Flutter,Sqflite,我想从sqflite数据库中获取值,并将其保存到Flatter中的列表中。 这是我的模型课 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> t
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,
};
}
课堂任务{
最终int id;
最后的字符串标题;
最终字符串描述;
最终字符串日期时间;
任务({this.id,this.title,this.description,this.dateTime});
映射toMap(){
返回{
“id”:id,
“标题”:标题,
“描述”:描述,
“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,
);
}
}
类数据库助手{
数据库助手;
静态最终DatabaseHelper db=DatabaseHelper.uz();
数据库(u)数据库;;
未来获取数据库异步{
如果(_database!=null)返回_database;
_数据库=等待_createDatabase();
返回数据库;
}
Future _createDatabase()异步{
返回wait-openDatabase(join(wait-getDatabasesPath(),'task.db'),
onCreate:(数据库,版本){
返回db.execute(
“创建表任务(id整数主键自动递增、标题文本、说明文本、日期时间文本)”,
);
},版本:1);
}
未来任务()异步{
最终数据库db=等待数据库;
最终映射=等待db.query('tasks');
返回列表。生成(maps.length,(i){
返回任务(
id:maps[i]['id'],
标题:地图[i][“标题”],
描述:映射[i]['description'],
dateTime:maps[i]['dateTime']
);
});
}
Future insertTask(任务任务)异步{
最终数据库=等待数据库;
等待db.insert(
“任务”,
task.toMap(),
conflictAlgorithm:conflictAlgorithm.replace,
);
}
}
当我使用print(wait tasks())时,它会在控制台中显示[Task'的实例,'Task'的实例]。这是一个bug吗?我想知道如何使用Task()从数据库中获取值在DatabaseHelper类中的函数。使用future builder,它需要future并在future对象更改时生成。使用future builder,它需要future并在future对象更改时生成 当我使用print(wait tasks())时,它会显示[Task'的实例,Instance] 控制台中的“任务”]的错误。它是错误吗 发生这种情况是因为您没有重写
toString()
。如果没有toString()
,您只会得到默认的字符串转换“XXX实例”:
通过覆盖toString()
可以自定义输出:
class Example {
@override
String toString() => "My custom Example!";
}
void main() async {
print(Task()); // My custom Example!
}
我想知道如何使用task()从数据库中获取值
在flatter中,等待未来的最常见方式是使用小部件。它非常方便,因为它可以显示一个进度指示器(让用户知道后台正在发生的事情),稍后将由实际数据替换
当我使用print(wait tasks())时,它会显示[Task'的实例,Instance]
控制台中的“任务”]的错误。它是错误吗
发生这种情况是因为您没有重写toString()
。如果没有toString()
,您只会得到默认的字符串转换“XXX实例”:
通过覆盖toString()
可以自定义输出:
class Example {
@override
String toString() => "My custom Example!";
}
void main() async {
print(Task()); // My custom Example!
}
我想知道如何使用task()从数据库中获取值
在flatter中,最常见的等待未来的方式是使用小部件。它非常方便,因为它可以显示进度指示器(让用户知道后台正在发生的事情)这将在稍后被实际数据替换它不是bug任务实例
表示列表包含任务
对象。它不是bug任务实例
表示列表包含任务
对象。