AndroidFlutter实现视频上滑翻页效果的示例代码_第1页
AndroidFlutter实现视频上滑翻页效果的示例代码_第2页
AndroidFlutter实现视频上滑翻页效果的示例代码_第3页
AndroidFlutter实现视频上滑翻页效果的示例代码_第4页
AndroidFlutter实现视频上滑翻页效果的示例代码_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第AndroidFlutter实现视频上滑翻页效果的示例代码目录前言PageView组件介绍使用示例PageController应用

前言

我们在短视频应用中经常会看到不停上滑浏览下一条视频的沉浸式交互效果,这种交互能够让用户不停地翻页,直到找到喜欢的视频内容,从而营造一种不断搜寻目标的感觉,让用户欲罢不能。这种交互形式在Flutter中可以轻松使用PageView组件实现。

PageView组件介绍

PageView组件专门设计用来实现翻页效果,类定义如下:

PageView({

Keykey,

this.scrollDirection=Axis.horizontal,

this.reverse=false,

PageControllercontroller,

this.physics,

this.pageSnapping=true,

this.onPageChanged,

ListWidgetchildren=constWidget[],

this.dragStartBehavior=DragStartBehavior.start,

this.allowImplicitScrolling=false,

this.restorationId,

this.clipBehavior=Clip.hardEdge,

this.scrollBehavior,

this.padEnds=true,

})

其中常用的属性说明如下:

scrollDirection:滑动方向,可以支持纵向翻页或横向翻页,默认是横向翻页。controller:翻页控制器,可以通过控制器来制定初始页,以及跳转到具体的页面。onPageChanged:翻页后的回调函数,会告知翻页后的页码。reverse:是否反向翻页,默认是false。如果横向滑动翻页的话,如果开启反向翻页,则是从右到左翻页。如果是纵向翻页的话,就是从顶部到底部翻页。children:在翻页中的组件列表,每一页都以自定义组件内容,因此这个组件也可以用于做引导页,或是类似滑动查看详情的效果。

使用示例

PageView使用起来非常简单,我们先定义一个PageView翻页的内容组件,简单地将接收的图片文件满屏显示。代码如下,实际应用的时候可以根据需要换成其他自定义组件。

classImagePageViewextendsStatelessWidget{

finalStringimageName;

constImagePageView({Keykey,requiredthis.imageName}):super(key:key);

@override

Widgetbuild(BuildContextcontext){

returnScaffold(

body:Image.asset(

imageName,

fit:BoxFit.fitHeight,

width:MediaQuery.of(context).size.width,

height:MediaQuery.of(context).size.height,

}

之后是定义一个PageViewDemo来应用PageView翻页应用示例,代码如下:

classPageViewDemoextendsStatefulWidget{

constPageViewDemo({Keykey}):super(key:key);

@override

StatePageViewDemocreateState()=_PageViewDemoState();

class_PageViewDemoStateextendsStatePageViewDemo{

latePageController_pageController;

int_pageIndex=1;

@override

voidinitState(){

_pageController=PageController(

initialPage:_pageIndex,

viewportFraction:1.0,

super.initState();

@override

Widgetbuild(BuildContextcontext){

returnScaffold(

backgroundColor:Colors.black,

body:PageView(

scrollDirection:Axis.vertical,

onPageChanged:(index){

_pageIndex=index;

controller:_pageController,

allowImplicitScrolling:false,

padEnds:true,

reverse:false,

children:const[

ImagePageView(imageName:'images/earth.jpeg'),

ImagePageView(imageName:'images/island-coder.png'),

ImagePageView(imageName:'images/mb.jpeg'),

}

这个示例里,我们的pageController只是演示了设置初始页码。我们看到的viewportFraction可以理解为一页内容占据屏幕的比例,比如我们可以设置该数值为1/3,支持一个屏幕分段显示3个页面内容。

PageController应用

PageController可以控制滑动到指定位置,比如我们可以调用animateToPage方法实现一个快速滑动到顶部的悬浮按钮。

floatingActionButton:FloatingActionButton(

onPressed:(){

_pageController.animateToPage(

duration:constDuration(

milliseconds:1000,

curve:Curves.easeOut,

backgroundColor:Colors.black.withAlpha(180),

child:constIcon(

Icons.arrow_upward,

color:Colors.white,

),

实现效果如下。

Page

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论