在Flutter中显示来自JSON的数据可以通过以下步骤实现:
class Person {
final String name;
final int age;
Person({required this.name, required this.age});
factory Person.fromJson(Map<String, dynamic> json) {
return Person(
name: json['name'],
age: json['age'],
);
}
}
http
或dio
)从网络或本地文件中获取JSON数据。你可以使用get
或post
等方法发送HTTP请求,并使用then
方法处理响应。import 'package:http/http.dart' as http;
import 'dart:convert';
Future<Person> fetchPerson() async {
final response = await http.get(Uri.parse('https://example.com/person.json'));
if (response.statusCode == 200) {
return Person.fromJson(jsonDecode(response.body));
} else {
throw Exception('Failed to load person');
}
}
FutureBuilder
小部件来处理异步数据。FutureBuilder
接收一个Future
对象,并根据异步操作的状态(未完成、完成、错误)显示不同的小部件。FutureBuilder<Person>(
future: fetchPerson(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text('Name: ${snapshot.data!.name}, Age: ${snapshot.data!.age}');
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return CircularProgressIndicator();
}
},
)
在上面的代码中,fetchPerson()
函数返回一个Future<Person>
对象,FutureBuilder
根据snapshot
的状态来显示不同的小部件。如果数据已经加载完成,它将显示包含从JSON数据中提取的姓名和年龄的文本小部件。如果发生错误,它将显示错误消息。如果数据尚未加载完成,它将显示一个圆形进度指示器。
这是一个基本的示例,你可以根据实际需求进行修改和扩展。关于Flutter的更多信息和示例,请参考Flutter官方文档。
领取专属 10元无门槛券
手把手带您无忧上云