Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从未来获取价值<;列表>;飘飘然_Flutter_Sqflite - Fatal编程技术网

Flutter 如何从未来获取价值<;列表>;飘飘然

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

我想从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> 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
任务实例
表示列表包含
任务
对象。