用户登录

内容全屏底部这里需要显示一排动作小图标,我们可以把它们单独放在一个小部件里。新建一个文件,放在 lib/post/show/components 里面,名字是 post_show_fullscreen_bottom_actions.dart。在文件里定义一个小部件,PostShowFullscreenBottomActions。

小部件里添加一个属性,类型是 Post,名字是 post,再添加一个构造方法 PostShowFullscreenBottomActions,里面添加一个参数,this.post。

打开 post_show_fullscreen_bottom,找到这里定义的 actions ,把它的值换成一个 PostShowFullscreenBottomActions 小部件,提供一个 post 参数。

回到 post_show_fullscreen_bottom_actions,在文件顶部先导入 provider 这个包。然后打开 post_actions,复制一下这里定义的 increaseTotalLikes,decreaseTotalLikes ,liked 还有 unliked。

把它们粘贴到 post_show_fullscreen_bottom_actions 这里。再去复制两样东西,复制一下 build 方法里的 onTapLikeAction ,还有上面的 likeCreateModel ,likeDestroyModel 。把它们粘贴到 post_show_fullscreen_bottom_actions 这里。先分别导入需要的这些东西,LikeCreateModel ,LikeDestroyModel ,还有 HttpException。

下面再声明一个 iconColor,值是 Colors.white38,用它作为小图标的颜色。再声明一个 aspectRatioAction,值可以新建一个 GestureDetector,设置一下 onTap,在里面执行 showModalBottomSheet,显示一个底板,提供一个 context,值是 context,再提供一个 builder ,构建器返回的是一个 PostMediaAspectRatioBottomSheet 。

小部件的 child 可以用一个 Container,这个容器的 child 是一个 Icon 小部件,使用的小图标是 Icons.aspect_ratio_outlined ,设置一下小图标的 color,值是上面定义的 iconColor。

metaAction

复制一份这个 action,改一下它的名字,定义一个 metaAction,修改一下 onTap 里面要做的事情,这个 showModalBottomSheet 的构建器返回的是一个 PostBottomSheet ,提供一个 post 参数。再修改一下小图标,用的是 camera_outlined 这个小图标。

commentAction

再复制一份这个 action ,改一下名字,定义一个评论动作,名字是 commentAction。暂时去掉 onTap 里的东西。使用的小图标换成 comment_outlined。

LikeAction

再复制一份,下面可以定义一个 likeAction ,onTap 的值设置成 onTapLikeAction 。 要使用的小图标可以判断一下,post.liked 是不是等于 0,如果是就用一下 Icons.favorite_border_outlined 小图标,不是的话就用一下 Icons.favorite 这个小图标。

return

下面再设置一下这个小部件的 build 方法 return 的东西,一个 Container 小部件,它的 child 是一个 Row 小部件,用 mainAxisAlignment 把主轴对齐设置成 MainAxisAlignment.spaceBetween。在它的 children 里面,添加一个 aspectRatioAction,一个 metaAction,一个 commentAction ,还有一个 likeAction。

测试

在全屏内容的页面底部这里,现在会显示一排动作小图标,点按比例小图标会弹出底板显示的是可以设置的媒体比例。

点按这个相机小图标,会显示这个内容相关图像的信息。点按心形小图标可以切换对这个内容的点赞。

内容全屏底部动作小部件(PostShowFullscreenBottomActions)《 Flutter 移动端实例:沉浸模式 》

统计

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

社会化网络

关于

微信订阅号

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