Как хранить данные нескольких API в нескольких таблицах SQFLITE - PullRequest
0 голосов
/ 19 июня 2019

В настоящее время я хранил данные по одному (вызывал один API и сохранял одну таблицу). Это замедляет мое приложение. Мне нужно вызвать все API один раз и сохранить несколько таблиц sqflite один раз . Итак, я искал в Google и нашел Future.wait.

Future.wait () код, подобный этому:

void storeAll(String url, String token) async {
  final urlList = ['$url/nativeapi/v1.0/Register','$url/nativeapi/v1.0/EquipmentReg'];//I have more than 15 APIs like this

  final responses = await Future.wait(
    urlList.map((String url) {
      return http.get(url,headers: {'Authorization': 'Bearer $token'});
    }),
  );

  final List<dynamic> caches = responses.map((response) {
    return json.decode(response.body);
  }).toList();
}

Проблема в том, как хранить данные API в нескольких таблицах.

Ниже МОИХ СТАРЫХ КОДОВ //it's working well. but times is 2minutes

onPressed: () async {
    //delete existing tables--I deleted 15 tables like this
    await HelperDatabase1().deleteAssetAssembly();
    await HelperDatabase1().deleteEquipmentReg();
    //insert data after delete--I inserted 15 APIs to local like this
    await HelperDatabase1().storeEquipmentReg(_url, tokens);
    await HelperDatabase1().storeAssetAssembly(_url, tokens);
}

Функция HelperDatabase1 (). StoreEquipmentReg (_url, tokens)

  Future<void> storeEquipmentReg(String url, String token) async {
    var db = await db1;
    Batch batch = db.batch();
    final response = await http.get(
      '${url}/nativeapi/v1.0/EquipmentReg',
      headers: {'Authorization': 'Bearer ${token}'},
    );
    final jsonResponse = json.decode(response.body);
    Assets model = Assets.fromJson(jsonResponse);
    int length = model.data.length;
    for (int i = 0; i < length; i++) {
      var data = DataEquipmentReg(
        i: model.data[i].i,
        r: model.data[i].r,
        l: model.data[i].l,
        t: model.data[i].t,
        p: model.data[i].p,
        c: model.data[i].c,
        u: model.data[i].u,
        a: model.data[i].a,
        b: model.data[i].b,
        eq_no: model.data[i].eq_no,
        isH_wit_C: model.data[i].isH_wit_C,
        n: model.data[i].n,
      );
      batch.insert(
        'EquipmentRegTable',
        data.toMap()
      );
    }
    await batch.commit();
  }
...