颤振:从json列表中获取数据

颤振:从json列表中获取数据,json,flutter,parsing,dart,Json,Flutter,Parsing,Dart,我正在通过URL JSON做一个与气候相关的学习项目,我获取您的数据并在应用程序中显示它们 我试图从JSON获取数据。 当我尝试获取数据时,我收到一个错误: 类型“\u TypeError”不是“Widget”类型的子类型。 我想解决这个问题,我感谢任何最小的帮助,谢谢 我的JSON: { "metcheckData": { "forecastLocation": { "forecast": [

我正在通过URL JSON做一个与气候相关的学习项目,我获取您的数据并在应用程序中显示它们

我试图从JSON获取数据。 当我尝试获取数据时,我收到一个错误: 类型“\u TypeError”不是“Widget”类型的子类型。 我想解决这个问题,我感谢任何最小的帮助,谢谢

我的JSON:

{
  "metcheckData": {
    "forecastLocation": {
      "forecast": [
        {
          "temperature": "18",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4656",
          "uvIndex": "0",
          "totalcloud": "8",
          "lowcloud": "8",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "84",
          "windspeed": "9",
          "meansealevelpressure": "1018.02",
          "windgustspeed": "11",
          "winddirection": "28.7724",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "3",
          "weekday": "Tuesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-19T23:00:00.00"
        },
        {
          "temperature": "18",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4663",
          "uvIndex": "0",
          "totalcloud": "8",
          "lowcloud": "8",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "85",
          "windspeed": "9",
          "meansealevelpressure": "1018.26",
          "windgustspeed": "11",
          "winddirection": "29.4946",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T00:00:00.00"
        },
        {
          "temperature": "18",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4666",
          "uvIndex": "0",
          "totalcloud": "8",
          "lowcloud": "8",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "86",
          "windspeed": "9",
          "meansealevelpressure": "1018.18",
          "windgustspeed": "10",
          "winddirection": "30.0925",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T01:00:00.00"
        },
        {
          "temperature": "18",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4668",
          "uvIndex": "0",
          "totalcloud": "11",
          "lowcloud": "11",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "87",
          "windspeed": "8",
          "meansealevelpressure": "1017.79",
          "windgustspeed": "10",
          "winddirection": "30.761",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T02:00:00.00"
        },
        {
          "temperature": "17",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4671",
          "uvIndex": "0",
          "totalcloud": "12",
          "lowcloud": "12",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "87",
          "windspeed": "8",
          "meansealevelpressure": "1017.36",
          "windgustspeed": "9",
          "winddirection": "31.0844",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T03:00:00.00"
        },
        {
          "temperature": "17",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4673",
          "uvIndex": "0",
          "totalcloud": "11",
          "lowcloud": "11",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "88",
          "windspeed": "8",
          "meansealevelpressure": "1017.04",
          "windgustspeed": "9",
          "winddirection": "31.4161",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T04:00:00.00"
        },
        {
          "temperature": "17",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4671",
          "uvIndex": "0",
          "totalcloud": "11",
          "lowcloud": "11",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "89",
          "windspeed": "7",
          "meansealevelpressure": "1016.89",
          "windgustspeed": "9",
          "winddirection": "31.2326",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T05:00:00.00"
        },
        {
          "temperature": "17",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4668",
          "uvIndex": "0",
          "totalcloud": "10",
          "lowcloud": "10",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "91",
          "windspeed": "8",
          "meansealevelpressure": "1017.04",
          "windgustspeed": "9",
          "winddirection": "30.2947",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T06:00:00.00"
        },
        {
          "temperature": "17",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4664",
          "uvIndex": "0",
          "totalcloud": "9",
          "lowcloud": "9",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "92",
          "windspeed": "8",
          "meansealevelpressure": "1017.35",
          "windgustspeed": "10",
          "winddirection": "29.0404",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T07:00:00.00"
        },
        {
          "temperature": "17",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4664",
          "uvIndex": "0",
          "totalcloud": "16",
          "lowcloud": "16",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "91",
          "windspeed": "9",
          "meansealevelpressure": "1017.77",
          "windgustspeed": "10",
          "winddirection": "27.9231",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T08:00:00.00"
        },
        {
          "temperature": "18",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4673",
          "uvIndex": "1",
          "totalcloud": "32",
          "lowcloud": "32",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "86",
          "windspeed": "9",
          "meansealevelpressure": "1018.05",
          "windgustspeed": "11",
          "winddirection": "25.3295",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T09:00:00.00"
        },
        {
          "temperature": "18",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4687",
          "uvIndex": "2",
          "totalcloud": "38",
          "lowcloud": "38",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "82",
          "windspeed": "9",
          "meansealevelpressure": "1018.31",
          "windgustspeed": "10",
          "winddirection": "22.0118",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T10:00:00.00"
        },
        {
          "temperature": "19",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4702",
          "uvIndex": "3",
          "totalcloud": "36",
          "lowcloud": "36",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "76",
          "windspeed": "9",
          "meansealevelpressure": "1018.56",
          "windgustspeed": "10",
          "winddirection": "18.4385",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T11:00:00.00"
        },
        {
          "temperature": "20",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4712",
          "uvIndex": "4",
          "totalcloud": "31",
          "lowcloud": "31",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "72",
          "windspeed": "9",
          "meansealevelpressure": "1018.79",
          "windgustspeed": "9",
          "winddirection": "14.9684",
          "windletter": "NNE",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T12:00:00.00"
        },
        {
          "temperature": "20",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4722",
          "uvIndex": "5",
          "totalcloud": "26",
          "lowcloud": "26",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "69",
          "windspeed": "9",
          "meansealevelpressure": "1018.9",
          "windgustspeed": "8",
          "winddirection": "12.5729",
          "windletter": "W",
          "icon": "FA",
          "iconName": "Fair",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T13:00:00.00"
        },
        {
          "temperature": "21",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4739",
          "uvIndex": "10",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "68",
          "windspeed": "9",
          "meansealevelpressure": "1018.83",
          "windgustspeed": "8",
          "winddirection": "10.6461",
          "windletter": "N",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T14:00:00.00"
        },
        {
          "temperature": "21",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4765",
          "uvIndex": "10",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "67",
          "windspeed": "9",
          "meansealevelpressure": "1018.59",
          "windgustspeed": "8",
          "winddirection": "9.82178",
          "windletter": "N",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T15:00:00.00"
        },
        {
          "temperature": "21",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4797",
          "uvIndex": "10",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "67",
          "windspeed": "9",
          "meansealevelpressure": "1018.34",
          "windgustspeed": "8",
          "winddirection": "9.66212",
          "windletter": "N",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T16:00:00.00"
        },
        {
          "temperature": "21",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4826",
          "uvIndex": "9",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "68",
          "windspeed": "9",
          "meansealevelpressure": "1017.98",
          "windgustspeed": "8",
          "winddirection": "8.49407",
          "windletter": "N",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T17:00:00.00"
        },
        {
          "temperature": "20",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4844",
          "uvIndex": "9",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "70",
          "windspeed": "9",
          "meansealevelpressure": "1017.81",
          "windgustspeed": "9",
          "winddirection": "8.70691",
          "windletter": "N",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "D",
          "utcTime": "2018-06-20T18:00:00.00"
        },
        {
          "temperature": "20",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4857",
          "uvIndex": "8",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "72",
          "windspeed": "10",
          "meansealevelpressure": "1017.93",
          "windgustspeed": "10",
          "winddirection": "10.5324",
          "windletter": "N",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T19:00:00.00"
        },
        {
          "temperature": "19",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4872",
          "uvIndex": "2",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "74",
          "windspeed": "10",
          "meansealevelpressure": "1018.25",
          "windgustspeed": "11",
          "winddirection": "13.7294",
          "windletter": "NNE",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T20:00:00.00"
        },
        {
          "temperature": "19",
          "dewpoint": "15",
          "rain": "0",
          "freezinglevel": "4889",
          "uvIndex": "1",
          "totalcloud": "1",
          "lowcloud": "1",
          "medcloud": "0",
          "highcloud": "0",
          "humidity": "78",
          "windspeed": "11",
          "meansealevelpressure": "1018.64",
          "windgustspeed": "13",
          "winddirection": "17.2073",
          "windletter": "NNE",
          "icon": "SU",
          "iconName": "Sunny",
          "chanceofrain": "0",
          "chanceofsnow": "0",
          "dayOfWeek": "4",
          "weekday": "Wednesday",
          "sunrise": "6:57",
          "sunset": "19:04",
          "dayOrNight": "N",
          "utcTime": "2018-06-20T21:00:00.00"
        },
      ],
      "continent": "",
      "country": "",
      "location": "28.0/-15.6",
      "latitude": 28.0,
      "longitude": -15.6,
      "timezone": 1
    }
  },
  "feedCreation": "2018-06-19T23:05:19.00",
  "feedCreator": "Metcheck.com",
  "feedModel": "GHX2",
  "feedModelRun": "12Z",
  "feedModelRunInitialTime": "2018-06-19T12:00:00.00",
  "feedResolution": "0.01"
}
我的省道代码

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title: new Text("G.C. - WEATHER"),
        centerTitle: true,
        backgroundColor: Colors.blue[700],
      ),
      body: new Container(
        child: new RefreshIndicator(
          onRefresh: _autoRefresh,
            child: new ListView(
              children: <Widget>[
                new FutureBuilder<List<Post>>(
                  future: fetchPosts(),
                  builder: (context, snapshot) {
                    if (snapshot.hasData){
                      List<Post> posts = snapshot.data;
                      return new Column(
                          children: posts.map((post) => new Column(
                            children: <Widget>[
                              new Text(post.temperature),
                            ],
                          )).toList()
                      );
                    }
                    else if(snapshot.hasError)
                    {
                      return snapshot.error;
                    }
                    return new Center(
                      child: new Column(
                        children: <Widget>[
                          new Padding(padding: new EdgeInsets.all(50.0)),
                          new CircularProgressIndicator(),
                        ],
                      ),
                    );
                  },
                ),
                
              ],
            ),
        ),
      ),
    );
  }
}
@覆盖
小部件构建(构建上下文){
返回脚手架(
appBar:新的appBar(
标题:新文本(“G.C.-天气”),
标题:对,
背景颜色:颜色。蓝色[700],
),
主体:新容器(
子项:新的刷新指示器(
onRefresh:\u自动刷新,
子:新列表视图(
儿童:[
新未来建设者(
future:fetchPosts(),
生成器:(上下文,快照){
if(snapshot.hasData){
List posts=snapshot.data;
返回新列(
子项:posts.map((post)=>新列(
儿童:[
新文本(后温度),
],
))托利斯先生()
);
}
else if(snapshot.hasrerror)
{
返回snapshot.error;
}
返回新中心(
子:新列(
儿童:[
新填充(填充:新边集。全部(50.0)),
新的CircularProgressIndicator(),
],
),
);
},
),
],
),
),
),
);
}
}
在我的DART代码中获取数据帖子

Future<List<Post>> fetchPosts() async {
  http.Response response = await http.get('http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=28&lon=-15.6&lid=62228&Fc=No');
  List responseJson = json.decode(response.body);
  return responseJson.map((m) => new Post.fromJson(m)).toList();
}

class Post {
  final String temperature, rain, humidity, sunrise, sunset, updateDate;

  Post({
    this.temperature,
    this.rain,
    this.humidity,
    this.sunrise,
    this.sunset,
    this.updateDate,
  });

  factory Post.fromJson(Map<String, dynamic> json) {
    return new Post(
      temperature: json['metcheckData']['forecastLocation']['forecast']['temperature'].toString(),
      rain: json['metcheckData']['forecastLocation']['forecast']['rain'].toString(),
      humidity:json['metcheckData']['forecastLocation']['forecast']['humidity'].toString(),
      sunrise: json['metcheckData']['forecastLocation']['forecast']['sunrise'].toString(),
      sunset: json['metcheckData']['forecastLocation']['forecast']['sunset'].toString(),
      updateDate: json['metcheckData']['forecastLocation']['forecast']['utcTime'].toString(),
    );
  }
}
Future fetchPosts()异步{
http.Response-Response=等待http.get('http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=28&lon=-15.6&lid=62228&Fc=No');
List responseJson=json.decode(response.body);
return responseJson.map((m)=>new Post.fromJson(m)).toList();
}
班岗{
最终串温、雨、湿度、日出、日落、更新;
职位({
这个温度,
今天下雨了,
这个,湿度,
这是日出,
这是日落,
这个。更新日期,
});
factory Post.fromJson(映射json){
换岗(
温度:json['metcheckData']['forecastLocation']['forecast']['temperature'].toString(),
rain:json['metcheckData']['forecastLocation']['forecast']['rain'].toString(),
湿度:json['metcheckData']['forecastLocation']['forecast']['湿度'].toString(),
日出:json['metcheckData']['forecastLocation']['forecast']['sunrise'].toString(),
日落:json['metcheckData']['forecastLocation']['forecast']['sunset'].toString(),
updateDate:json['metcheckData']['forecastLocation']['forecast']['utcTime'].toString(),
);
}
}

在查看json和代码之后,我发现json的根不是JsonArray,而是JsonObject。您试图获取的列表位于
['metcheckData']['forecastLocation']['forecast']

在这里,我对正在运行的代码进行了更改

Future<List<Post>> fetchPosts() async {
  http.Response response = await http.get(
      'http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=28&lon=-15.6&lid=62228&Fc=No');
  var responseJson = json.decode(response.body);
  return (responseJson['metcheckData']['forecastLocation']['forecast'] as List)
      .map((p) => Post.fromJson(p))
      .toList();
}

class Post {
  final String temperature, rain, humidity, sunrise, sunset, updateDate;

  Post({
    this.temperature,
    this.rain,
    this.humidity,
    this.sunrise,
    this.sunset,
    this.updateDate,
  });

  factory Post.fromJson(Map<String, dynamic> json) {
    return new Post(
      temperature: json['temperature'].toString(),
      rain: json['rain'].toString(),
      humidity: json['humidity'].toString(),
      sunrise: json['sunrise'].toString(),
      sunset: json['sunset'].toString(),
      updateDate: json['utcTime'].toString(),
    );
  }
}
Future fetchPosts()异步{
http.Response-Response=等待http.get(
'http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=28&lon=-15.6&lid=62228&Fc=No');
var responseJson=json.decode(response.body);
返回(responseJson['metcheckData']['forecastLocation']['forecast']作为列表)
.map((p)=>Post.fromJson(p))
.toList();
}
班岗{
最终串温、雨、湿度、日出、日落、更新;
职位({
这个温度,
今天下雨了,
这个,湿度,
这是日出,
这是日落,
这个。更新日期,
});
factory Post.fromJson(映射json){
换岗(
温度:json['temperature'].toString(),
rain:json['rain'].toString(),
湿度:json['湿度].toString(),
sunrise:json['sunrise'].toString(),
日落:json['sunset'].toString(),
updateDate:json['utcTime'].toString(),
);
}
}

如果在速度较慢的设备上运行
fetchPhotos()
函数,您可能会注意到应用程序在解析和转换JSON时会短暂冻结。这是jank,你想摆脱它

您可以通过使用flatter提供的compute()函数将解析和转换移动到背景隔离来删除jank。
compute()
函数在后台运行昂贵的函数并返回结果。在这种情况下,在后台运行
parsePhotos()
函数

Future<List<Photo>> fetchPhotos(http.Client client) async {
  final response = await client
      .get(Uri.parse('https://jsonplaceholder.typicode.com/photos'));

  // Use the compute function to run parsePhotos in a separate isolate.
  return compute(parsePhotos, response.body);
}

// A function that converts a response body into a List<Photo>.
List<Photo> parsePhotos(String responseBody) {
  final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>();

  return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}
Future fetchPhotos(http.Client)异步{
最终响应=等待客户
.get(Uri.parse('https://jsonplaceholder.typicode.com/photos'));
//使用compute函数在单独的隔离中运行parsePhotos。
返回compute(parsePhotos,response.body);
}
//将响应主体转换为列表的函数。
列表照片(字符串响应库){
final parsed=jsonDecode(responseBody.cast();
返回parsed.map((json)=>Photo.fromJson(json)).toList();
}
创建包含有关照片的数据的数据类。包含一个fromJson()工厂方法,以便于从JSON对象开始创建照片

class Photo {
  final int albumId;
  final int id;
  final String title;
  final String url;
  final String thumbnailUrl;

  Photo({this.albumId, this.id, this.title, this.url, this.thumbnailUrl});

  factory Photo.fromJson(Map<String, dynamic> json) {
    return Photo(
      albumId: json['albumId'] as int,
      id: json['id'] as int,
      title: json['title'] as String,
      url: json['url'] as String,
      thumbnailUrl: json['thumbnailUrl'] as String,
    );
  }
班级照片{
最终的int-albumId;
最终int id;
最后的字符串标题;
最终字符串url;
最终字符串缩略图URL;
照片({this.albumId,this.id,this.title,this.url,this.thumbnailUrl});
factory Photo.fromJson(映射json){
返回照片(
albumId:json['albumId']作为int,
id:json['id']作为int,
title:json['title']作为字符串,
url:json['url']作为字符串,
thumbnailUrl:json['thumbnailUrl']作为字符串,
);
}