【发布时间】:2019-12-30 12:17:03
【问题描述】:
我一直在尝试使用 REST API 从我的数据库中检索数据。我的代码没有错误,但我的模拟器中没有显示数据,并且一直显示循环进度指示器(这意味着没有数据)
这是因为我想从共享偏好中获得令牌吗?还是别的什么?
这是我的 getToken 代码:
String token;
Future<String> getToken() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String token = prefs.getString("token");
return token;
}
这是我的 ShowPost 代码:
Future<List<Post>> showPosts() async {
String token = await getToken();
var data = await http.get(
"https://api-wisapedia.herokuapp.com/posts?sortBy=createdAt:desc",
headers: {HttpHeaders.authorizationHeader: 'Bearer $token'},
);
var dataDecoded = json.decode(data.body);
List<Post> posts = List();
dataDecoded.forEach((post) {
post.add(post["destination"], post["owner"], post["image"]);
});
return posts;
}
这是我的正文代码:
FutureBuilder(
future: showPosts(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return Card(
color: Color(0xFFE1F5FE),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
leading: Image(
image: AssetImage('lib/images/pantai.jpg')),
title: Text(snapshot.data[index].title),
subtitle: Text(snapshot.data[index].destination),
),
ButtonTheme.bar(
// make buttons use the appropriate styles for cards
child: ButtonBar(
children: <Widget>[
FlatButton(
child: const Text('DETAILS'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return DetailPost();
}),
);
},
),
FlatButton(
child: const Text('JOIN'),
onPressed: () {
/* ... */
},
),
],
),
),
],
),
);
});
} else {
return Align(
alignment: FractionalOffset.center,
child: CircularProgressIndicator(),
);
}
})
我该如何解决这个问题?
【问题讨论】: