Проблема, когда я запрашиваю мой API для хранения данных в флаттер карты - PullRequest
0 голосов
/ 25 сентября 2019

Когда я нажимаю в моем SwitchButton, я сохраняю идентификатор в SharedPreferences.Я восстановил этот идентификатор и запросил мой API.

Потому что с этим идентификатором я восстановил все технологии.

Но проблема в том, что мой список сбрасывается при каждом идентификаторе.

РЕДАКТИРОВАТЬ:


Theme theme;
List<Technology> technos = [];

class Technology {
  int id;
  String name;

  Technology({this.id, this.name});

  factory Technology.fromJson(Map<String, dynamic> json) {
    return Technology(
      id: json['id'],
      name: json['name'],
    );
  }

  Future<List<Technology>> getTechnologies() async {
    String id = await Theme().getTheme();
    String url = 'http://10.0.2.2:3000/v1/api/theme/${id}/technology';
    String token = await Candidate().getToken();

    final response = await http.get(url, headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': 'Bearer ${token}',
    });

    if (response.statusCode == 200) {
      List technosList = jsonDecode(response.body);
      for (var technoMap in technosList) {
        technos.add(Technology.fromJson(technoMap));
      }
      return technos;
    } else {
      throw Exception('Failed to load technos');
    }
  }
}


Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Я отредактировал свой метод:

Future<List<String>> getListTheme() async {
    List<String> themes = List<String>();
    final SharedPreferences preferences = await SharedPreferences.getInstance();
    for (String key in preferences.getKeys()) {
      if (key == 'token') {
        preferences.containsKey(key);
      } else {
        themes.add(jsonEncode(preferences.getStringList(key)));
      }
    }
    return themes;
  }

0 голосов
/ 25 сентября 2019

Поскольку в каждом API вы перезаписываете technos, следовательно, предыдущие данные теряются.Вы можете сделать это technos глобальным для этого Screen или, если используете BLOC методы.

Использовать List<Technology> technos = []; глобально, а не getTechnologies().

Остальное можно добавить

technos.add(Technology.fromJson(technoMap));
...