新建一个文件,放在 lib/post/show/components 里面,名字是 post_image_view.dart,在文件里定义一个小部件,名字是 PostImageView 。添加一个 Post 类型的参数,名字是 post,准备一个构造方法 PostImageView ,添加一个参数,this.post。
小部件里面可以用一个 CustomScrollView ,添加一个 slivers ,它是一个列表,里面是一个 Sliver 类型的小部件的,先随便添加一个 SliverFillRemaining ,它的 child 是一个 Center 小部件,然后用一个 Text 小部件,显示的文字是 PostImageView 。
post_show.dart
打开 post_show,在这里再声明一个 useImageView,它的值暂时设置成 hasPost 并且 isFullScreen 。 然后判断一下,如果 useImageView,重新设置 body,让它等于一个 PostImageView,提供一个 post!
全屏幕显示内容图像的时候可以让页面背景颜色变成黑色,设置一下 Scaffold 小部件的 backgroundColor ,值可以判断一下 isFullScreen ,如果是 true ,就用 Colors.black ,不然就是 null 。
post_show_media
双击内容页面图像的时候,可以把图像显示比例设置成 0 ,打开 post_show_media,声明一个 setMediaAspectRatio,值等于 postShowStore.setMediaAspectRatio。
然后给这个 Hero 添加一个包装,用一个 GestureDetector,设置一下它的 onDoubleTap,双击的时候会执行这个方法,在这里可以执行 setMediaAspectRatio,提供一个 0 。
测试
重新启动一下应用,打开一个内容页面,然后双击一下内容图像,这样会把 PostShowStore 里的 mediaAspectRatio 设置成 0 ,现在显示的就是 PostImageView 小部件。