【发布时间】:2018-11-24 15:31:12
【问题描述】:
该应用程序是一个简单的新闻阅读器,它显示 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!";
}
未来获取帖子并显示加载指示器:
body: FutureBuilder<List<String>>(
future: getPosts(),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? ListViewPosts(posts: snapshot.data)
: Center(child: CircularProgressIndicator());
},
),
【问题讨论】:
-
LruMap可能吗? -
我知道你在问题中声明了 NO FIREBASE,但你知道它已经提供了,对吧?您可以获取帖子,将其保存在 firebase 数据库中,然后就可以离线使用了。 (待定)
-
我制作了this search and found 一些有趣的包。 This one 看起来正是您要找的东西,如果您有大型对象,this one 可能更适合移动环境。