首页 > 解决方案 > 如何在映射列表中等待未来

问题描述

所以我使用 sqflite 进行颤振,从 MySql 中的数据库中获取数据,并使用 sqflite 将其存储在设备的本地存储中,为此我编写了以下代码:

  Future<List<Lentille>> getAllLentilles() async {
    Response response = await Dio().get(apiurl + "/Lentille");

    return (jsonDecode(response.data.toString()) as List).map((lentille) {
      DBProvider.db.createLentille(Lentille.fromJson(lentille));
    }).toList();
  }

事情在地图里面,DBProvider.db.createLentille(Lentille.fromJson(lentille))有一个await

createLentille(Lentille newLentille) async {
    await deleteAllLentilles();
    final db = await database;
    int value;
    String number = await _storage.read(key: "number");
    value = int.tryParse(number) + 1;

    await _storage.write(key: "number", value: value.toString());
    /****************************************************************** */
    Directory documentDirectory = await getApplicationDocumentsDirectory();
    File file =
        File(join(documentDirectory.path, 'image' + value.toString() + '.png'));
    if (await file.exists()) await file.delete();
    await file.writeAsBytes(base64Decode(newLentille.image));
    /****************************************************************** */

    newLentille.image = "image" + value.toString();

    print("Lentille :" + newLentille.image);

    final res = await db.insert('Lentilles', newLentille.toJson());
    await Future.delayed(Duration(seconds: 1));
    return res;
  }

我的问题是地图内的 createLentille() 不是异步的,它并行执行,我怎样才能使它在地图内异步?谢谢

标签: flutterdart

解决方案


推荐阅读