Flutter模仿了掘金微信图中滑动输出页面的效果
最近在思考,实现了效果。
首先用 ExtendedImageSlidePage
var page = ExtendedImageSlidePage(
child: PicSwiper(
index,
listSourceRepository
.map<PicSwiperItem>(
(f) => PicSwiperItem(f.imageUrl, des: f.title))
.toList(),
),
//pageGestureAxis: PageGestureAxis.horizontal,
);
复制代码
ExtendedImageGesture 页面参数
参数 | description | default❙‶❙‶来包裹页面 - |
---|---|---|
slidePageBackgroundHandler | 调整根据页面滚动偏移量 | defaultSlidePageBackgroundHandler |
slideScaleHandler | 根据滚动时Slide H Offset偏移量调整全页缩放值 | |
slide EndHandler | 滑动页面时计算是否需要打开页面结束 | defaultSlideEndHandler |
slideAxis | 滑动页面的方向(双向、水平、垂直),Ch Nuggets 为垂直,both | |
resetPageDuration | 滑动结束。如果页面不跳转,则弹跳整个页面的时间 | 毫秒:500 |
slideType | 滑动整个页面或仅滑动图像(仅整个图像/图像)类型。 以下是默认实现,您也可以根据自己的喜好定义自己的方法
确保您的页面有透明背景如果设置了slideType =SlideType.onlyImage,请确保您的页面是透明的 是的,在你终究控制不了页面的颜色 按透明页面我这里复制了官方的MaterialPageRoute和CupertinoPageRoute,改成TransparentMaterialPageRoute/TransparentCupertino❙因为他们的❀PageRoute无法设置❙嗯,应该很容易使用吧?群里的朋友抱怨表情太多,用不了,比如蓝色蘑菇。 实施过程中的一些陷阱1.手势、缩放拖动和PageView之间的关系和冲突我的想法是先在ExtendedImageSlidePage中注册手势监听事件,然后当满足ExtendedImageGesture中的条件(到达边界/无法拖动)时通知ExtendedImageSlidePage运行页面滚动手势这可能会阻止对 ExtendedImageSlidePage 子页面进行测试。 但是在实践中发现,在ExtendImageGesture(手指抬起)完成之前,ExtendedImageSlidePage无法接收到任何手势,也没有出现IgnorePointer 后来就简单直接设置手势接收了在扩展图像手势中。 ,直接通知ExtendImageSlidePage进行平移和缩放 2。透明页面TransparentMaterialPageRoute/TransparentCupertinoPageRoute 由于必须整个页面透明,所以官方的已经被覆盖了。 但是打开页面还是有些不满意。例如,在 ios 上,阴影是从左到右,而在 android 上,阴影是在整个页面上。 这些效果已通过编辑官方源代码删除。有兴趣的朋友可以看看extend_image_slide_page_route.dart(最近代码被拉面诟病太多,差评,所以代码就不公布了) 缺陷设置SlideType.onlyImage因为我不能控制页面上的其他内容我只能依靠改变背景颜色。为页面上的其他内容制作动画的更好方法 作者:Fa's Space |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。