繁体   English   中英

未来<list>列出 Flutter 中的对象</list>

[英]Future<List> to List with Objects in Flutter

我最近开始使用 Flutter。我的应用程序运行一个 sqflite 数据库,我想从中获取所有数据并将其显示在我的应用程序的行小部件中。

我知道如何获取数据,也知道如何构建小部件。 我很困惑,我不知道如何将从数据库中获取的数据转换为列表(用它我可以构建我的小部件)。

所以我得到了 Future List 但我需要 List Drink

只是看看:

我的Object:

class Drink {
  int id;
  String time;
  int amount;

  Drink({this.id, this.time, this.amount});
}

数据库:

Future _onCreate(Database db, int version) async {
    await db.execute('''
          CREATE TABLE $table (
            $columnId INTEGER PRIMARY KEY,
            $columnTime TEXT NOT NULL,
            $columnAmount INTEGER NOT NULL
          )
          ''');
  }

我如何获得 output:

Future<List> raw() async {
    Database db = await instance.database;
    var dbClient = await db;
    var result = await dbClient.rawQuery("SELECT * FROM $table");
    List<Map<String, dynamic>> r = result.toList();
    return r;
  }

在您的model中创建一个工厂构造函数

class Drink {
  int id;
  String time;
  int amount;

  Drink({this.id, this.time, this.amount});

  factory Drink.fromJson(Map<String, dynamic> json) {
        return Drink(
            id: json['columnId'],
            time: json['columnTime'], 
            amount: json['columnAmount'], 
        );
    }
}

稍后,你可以 map 你获取的数据库数据像这样Drink

Future<List<Drink>> fetchDrinks() async {
    Database db = await instance.database;
    var dbClient = await db;
    var result = await dbClient.rawQuery("SELECT * FROM $table");
    List<Map<String, dynamic>> r = result.toList().map((data) => Drink.fromJson(data));
    return r;
  }

您可以在fetchDrinks方法上使用await来获取Drink列表 object。

我没有测试过这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM