【发布时间】:2021-01-04 19:55:29
【问题描述】:
获取 API 连接成功。但我不知道如何映射数据..如何连接快照.data, 我想在 Stack 小部件中显示数据。
https://flutter.dev/docs/cookbook/networking/fetch-data
我从与此来源的关联中了解到这一点
Future<News> fetchNews() async {
final response =
await http.get('#url');
print(response.body);
if (response.statusCode == 200) {
return News.fromJson(jsonDecode(response.body));
} else {
throw Exception('Failed to load news');
}
}
class News {
final String title;
final String description;
final String image;
News({this.title, this.description, this.image});
factory News.fromJson(Map<String, dynamic> json) {
return News(
title: json['title'],
description: json['description'],
image: json['image'],
);
}
}
Widget _buildPage(BuildContext context, int direction) {
Size size = MediaQuery.of(context).size;
return SafeArea(
child: FutureBuilder<News>(
future: futureNews,
builder: (context, snapshot) {
if (snapshot.hasData) {
return newsCard(snapshot.data);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
),
);
}
Widget newsCard(size){
return Stack(
children: <Widget>[
Container(
child: Image.network(
image,
fit: BoxFit.cover
),
height: size.height/2.0,
),
),
],
);
}
【问题讨论】:
-
你能展示你的未来吗?你在json中获取数据吗?你是在解码数据之后吗?从您的代码看来,您的 News 对象似乎被用于获取高度?那是对的吗?声明的图像变量在哪里?
-
好的.. 感谢您的回复。我更新了问题。