我是 flutter 的新手,我尝试从 rest api 解析数据。 接口(interface)返回:
http://www.json-generator.com/api/json/get/cqwVqdOFrC?indent=2
例如。这里从 json api 获取数据,例如。长度为3231
class ApiService {
static Future<dynamic> _get(String url) async {
try {
final response = await http.get(url);
var jsonData = json.decode(response.body);
if (response.statusCode == 200) {
print(response.body.length); //3231
return jsonData;
} else {
return null;
}
}
}
但是这里是 snapshot.hasData = False,为什么?
return Scaffold(
appBar: AppBar(title: Text('Posts'),),
body: FutureBuilder(
future: ApiService.getUserList(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
print(snapshot.hasData.toString()); //False no data
static Future<List<dynamic>> getUserList() async {
return await _get('${Urls.BASE_API_URL}');
}
在 json 开头没有 items 一切正常。我的网络服务器在开头返回项目。有什么解决办法吗?
最佳答案
api 返回 Map<String, dynamic>
不是<List<dynamic>>
class ListaAbitudini extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new _ListaAbitudiniState();
}
}
class _ListaAbitudiniState extends State<ListaAbitudini> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Posts'),
),
body: FutureBuilder(
future: ApiService.getUserList(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if(snapshot.hasData)
print("True");
return Container();
}));
}
}
class ApiService {
static Future<Map<String, dynamic>> getUserList() async {
return await _get('http://www.json-generator.com/api/json/get/cqwVqdOFrC?indent=2');
}
static Future<dynamic> _get(String url) async {
try {
final response = await http.get(url);
var jsonData = json.decode(response.body);
if (response.statusCode == 200) {
print(response.body.length); //3231
return jsonData;
} else {
return null;
}
} catch (e) {
print(e);
}
}
}
关于json - Flutter 快照数据为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010571/