在内容列表,打开一个内容项目,然后向后浏览一个内容,再双击内容图像打开全屏幕的模式。你会发现这里显示的仍然是第一次打开的那个内容的图像。
这是因为我们在内容视图里面用的两种页面视图,虽然它们用了同一个页面控制器,但是滚动的位置不是同步的。我们可以想办法让它们同步,或者也可以用 PhotoViewGallery 替换掉一般的 PageView,因为这个 PhotoViewGallery 实际上生成的也是 PageView。
post_image_view
打开 post_image_view ,这里声明一个 usePageView,值是 hasPosts,上面这个 userPageImageView 可以删除掉。
然后复制一下这个 userPageContentView 这种情况里用的这个 PageView 里的 addPostFrameCallback ,再把这块代码删除掉。
下面判断 usePageImageView 可以换成 usePageView ,如果要使用页面视图的话,我们就可以 PhotoViewGallery 的构建器生成。
这里设置一下 backgroundDecoration ,值是 BoxDecoration,用 color 设置一下背景颜色,判断一下 isFullScreen ,如果是就用 Colors.black ,不是就是 null 。
然后在这个 builder 里面,把刚才复制的 addPostFrameCallback 粘贴到这里。
再修改一下 FractionallySizedBox 小部件的 child ,判断一下 usePageContentView,如果是这个 child 就用一下 PostContentView,如果不是,就用 PostImageView 。
测试
在模拟器可以再测试一下,回到内容列表,然后打开一个内容项目,向后浏览一个内容,再双击内容图像。你会发现这里显示的内容图像就是之前最后浏览到的那个内容的图像。