сохранить список во флаттере таблицы sqlite - PullRequest
0 голосов
/ 07 июля 2019

Я хочу вставить список элементов в таблицу sqlflite, но не могу понять, как это сделать.и как получить данные из таблицы.

Я уже инициализировал базу данных и создал таблицу.Получил данные из php-файла, связанного с моей базой данных.но когда хочется сохранить локально, я сталкиваюсь с проблемой.

class QuestionBankModel {
  List<BCSSession> sessions;

  QuestionBankModel({this.sessions});

  QuestionBankModel.fromJson(Map<String, dynamic> json) {
    if (json['sessions'] != null) {
      sessions = new List<BCSSession>();
      json['sessions'].forEach((v) {
        sessions.add(new BCSSession.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.sessions != null) {
      data['sessions'] = this.sessions.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class BCSSession {
  String id;
  String itemTitle;
  String progress;

  BCSSession({this.id, this.itemTitle, this.progress});

  BCSSession.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    itemTitle = json['item_title'];
    progress = json['progress'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['item_title'] = this.itemTitle;
    data['progress'] = this.progress;

    return data;
  }
}

Вот так я получаю данные и пытаюсь вставить их в таблицу sqlite

 void populateDb(Database database, int version) async {
  //create table for "QuestionBank"
      await database.execute("CREATE TABLE QuestionBank("
          "id TEXT,"
          "item_title TEXT,"
          "progress TEXT"
          ")"
      );
      fetchSessions;
  }


  // not working
  Future get fetchSessions async {
      final response = await http
          .get('http://samsunimas.000webhostapp.com/get_questionBank.php');
      var jsonData = json.decode(response.body);
      print(jsonData); // data is being fetched properly
      QuestionBankModel questionBankModel = 
        QuestionBankModel.fromJson(jsonData);
      List<BCSSession> listSessions = questionBankModel.sessions;
      save(listSessions);
    }

   Future save( BCSSession listSessions) async {
      var dbClient = await database;
      listSessions = await dbClient.insert("QuestionBank", 
                         listSessions.toJson());
      return listSessions;   
    }

//how to fetch the data that are being inserted?

 Future get fetchSessionsFromTable async {
  //??
 }
...