разобрать JSON в объекте флаттер - PullRequest
1 голос
/ 25 сентября 2019

Я хочу разобрать свой json в объекте Theme:

РЕЗУЛЬТАТ:

["[\" 1 \ ", \" Alternant \ "]", "[\"2 \", \ "DevOps \"] "]

Метод getListTheme:

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;
  }

Другой код:

await Theme().getListTheme().then((value){
      theme = jsonEncode(value);
    });

Мой класс темы:

class Theme {
  int id;
  String name;

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

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

Как я могу разобрать результат в объекте темы?

Ответы [ 2 ]

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

Полагаю, вы можете попытаться вернуть объект, передающий JSON, как это

Future<Theme> fechDataTheme(){

   Theme theme  =  Theme.fromJson('YOUR JSON HERE');

   return theme;

 }

, получив объект, вы можете использовать FutureBuilder, чтобы получить его в пользовательском интерфейсе

FutureBuilder<Theme>(
        future: fetchDataTheme(),
        builder: (context, AsyncSnapshot snapshot) {


            if (snapshot.hasData) {
            return Column(

              children: <Widget>[
                Text(snapshot.data.id),
                Text(snapshot.data.name),
              ],

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

Я использую этот сайт для преобразования json в объект dart https://javiercbk.github.io/json_to_dart/

...