как трепетать карту для виджета - PullRequest
0 голосов
/ 03 апреля 2020

my json =

{
  "result": {
    "name": "json1",
      "pages": [{
          "zones": [{
              "title": "title1"
           },
           {
              "title": "title2"
           }],
           "id": 4
       },
       {
          "zones": [{
            "title": "title3"
          },
          {
            "title": "title4"
          }],
          "id": 12
       }],
       "creatorUserName": "admin",
       "id": 2
    }
}

код futurebuilder

List post = snapshot.data["result"]["pages"];

return new Stack(
              children: post.where((val) => val["id"] == 4).map((post) {
                for (var item in post['zones']) {
                print("title "+ item['title']);
                  Container(
                    child: Text(item["title"]),
                  ); //Container
                }


              }).toList(),

); //Stack

Код ошибки: дочерние элементы стека не должны содержать нулевых значений, но в индексе 0 * 1007 найдено нулевое значение введите описание изображения здесь

помогите, как можно построить алгоритмы

, если получить id = 4 зоны -> Текст (title1), Текст (title2),


иначе id пустых зон -> Текст (title1), Текст (title2), зоны -> Текст (title3), Текст (title4),

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Попробуйте

List post = snapshots.data["result"]["pages"];
0 голосов
/ 04 апреля 2020

Сначала создайте класс модели для ответа JSON, используя эту удивительную веб-страницу , после этого вы можете легко. позвоните по нужным данным

import 'dart:convert';

YourModelClassName yourModelClassNameFromJson(String str) => YourModelClassName.fromJson(json.decode(str));

String yourModelClassNameToJson(YourModelClassName data) => json.encode(data.toJson());

class YourModelClassName {
    Result result;

    YourModelClassName({
        this.result,
    });

    factory YourModelClassName.fromJson(Map<String, dynamic> json) => YourModelClassName(
        result: Result.fromJson(json["result"]),
    );

    Map<String, dynamic> toJson() => {
        "result": result.toJson(),
    };
}

class Result {
    String name;
    List<Page> pages;
    String creatorUserName;
    int id;

    Result({
        this.name,
        this.pages,
        this.creatorUserName,
        this.id,
    });

    factory Result.fromJson(Map<String, dynamic> json) => Result(
        name: json["name"],
        pages: List<Page>.from(json["pages"].map((x) => Page.fromJson(x))),
        creatorUserName: json["creatorUserName"],
        id: json["id"],
    );

    Map<String, dynamic> toJson() => {
        "name": name,
        "pages": List<dynamic>.from(pages.map((x) => x.toJson())),
        "creatorUserName": creatorUserName,
        "id": id,
    };
}

class Page {
    List<Zone> zones;
    int id;

    Page({
        this.zones,
        this.id,
    });

    factory Page.fromJson(Map<String, dynamic> json) => Page(
        zones: List<Zone>.from(json["zones"].map((x) => Zone.fromJson(x))),
        id: json["id"],
    );

    Map<String, dynamic> toJson() => {
        "zones": List<dynamic>.from(zones.map((x) => x.toJson())),
        "id": id,
    };
}

class Zone {
    String title;

    Zone({
        this.title,
    });

    factory Zone.fromJson(Map<String, dynamic> json) => Zone(
        title: json["title"],
    );

    Map<String, dynamic> toJson() => {
        "title": title,
    };
}
...