该应用程序是一个简单的新闻阅读器,它显示 WordPress 帖子,没什么特别的,不使用 BLOC、继承的 Widget、Firebase。我希望它即使在用户离线时也能显示缓存的数据(这是最新的 10 个帖子)。
所以如果用户离线显示缓存数据;或者以某种方式默认数据是缓存数据。
从 WP REST API 获取 firstPost[Id] 如果缓存的 Json 文件包含 Post[id],则显示缓存的数据;否则 getPosts(); 并显示加载指示器。还请更新本地 JSON 文件。
获取JSON数据的代码:
// Function to fetch list of posts
Future<String> getPosts() async {
var res = await http
.get(Uri.encodeFull(apiUrl + "posts?_embed&per_page=10"), //TODO make it unlimited
headers: {"Accept": "application/json"});
setState(() {
var resBody = json.decode(res.body);
posts = resBody;
});
return "Success!";
}
Run Code Online (Sandbox Code Playgroud)
获取帖子并显示加载指示器的未来:
body: FutureBuilder<List<String>>(
future: getPosts(),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? ListViewPosts(posts: snapshot.data)
: …Run Code Online (Sandbox Code Playgroud)