应用程序的发布模式无法从url获取数据,因此屏幕仅显示“正在加载...”
我正在使用package:http/http.dart
包来获取数据。
这是我的State
类的样子:
class HomeState extends State<Home>{
Future<List<Coin>> getCoinList() async {
var url = '<some_url>';
var response = await http.get(url);
var jsonData = json.decode(response.body);
//iterate through jsonData, create a list and return
}
Future<void> updateData() async{
setState((){});
}
@override
Widget build(BuildContext context) {
return RefreshIndicator(child: FutureBuilder(
future: getCoinList(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.data == null) {
return Center(
child: Container(
child: Text("Loading..."),
),
);
} else {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int position) {
String sign = '-';
MaterialColor signColor = Colors.red;
if(double.parse(snapshot.data[position].percent_change_1h) > 0.0){
sign = '+';
signColor = Colors.green;
}
return Card(
child: ListTile(
title: Text(snapshot.data[position].name,style: TextStyle(fontWeight: FontWeight.bold),),
subtitle: Text(snapshot.data[position].price_usd,style: TextStyle(color: signColor),),
trailing: Text(sign+snapshot.data[position].percent_change_1h+"%",style: TextStyle(color: signColor),),
),
);
});
}
}), onRefresh: updateData);
}
}
请详细说明代码出了什么问题以及如何解决。谢谢。
答案 0 :(得分:0)
getCoinList()
返回更新的数据,但是实际上您需要使用
setState () {
coindata = getCoinList();
}
如果不更新状态对象,则不会重建列表。