用户登录

一个内容列表可能有很多页,只有必要的时候才会加载新页面的列表数据,下面我们可以设置一下,在浏览内容的时候,如果需要,也可以去加载新的列表数据,这样就可以继续浏览新的内容项目了。

post_index_store

打开 post_index_store ,在这个 store 里可以定义一个方法,名字叫 getMorePostsIfNecessary ,接收一个 int 类型的参数,名字是 currentPostId 。在方法里声明一个 index,值可以用一下 getPostIndex,把 currentPostId 交给这个方法。

再声明一个 canGetMorePosts,值可以判断一下 hasPosts 并且 hasMore ,并且 posts!.length - index 小于 3 ,也就是如果当前显示的内容项目后面的内容项目数量小于 3 个的时候,如果还有需要加载的列表数据,就可以执行一下 getPosts 获取到列表数据,判断一下 canGetMorePosts ,执行 getPosts() 。

为了验证一下,可以在上面再输出一行文字,加载新的列表数据。

post_show

打开 post_show,在 Observer 的 builder 这里,先声明一个 getMorePostsIfNecessary ,它的值等于 postIndexStore.getMorePostsIfNecessary 。

在这个 PageView 的 itemBuilder 这里,用一下 WidgetsBinding.instance!,addPostFrameCallback,在下一帧注册一个回调,如果不这么做的话加载内容列表数据重建小部件就会报错。 在这个回调里面执行一下这个 getMorePostsIfNecessary,把 currentPost 里的 id 交给这个方法。

测试

打开调试控制台,然后可以在模拟器上测试一下,打开一个内容项目,向后浏览内容,浏览到倒数第三个内容项目的时候,如果还有需要加载的内容列表数据,就会执行 getPosts 获取新的列表数据。这样我们就可以继续向后浏览列表里的其它的内容项目了。

浏览内容时如果需要加载新的列表数据《 Flutter 移动端实例:内容导航 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点