前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Element 系列组件之 EPageView 组件

Element 系列组件之 EPageView 组件

作者头像
老孟Flutter
发布2022-02-09 10:22:08
4630
发布2022-02-09 10:22:08
举报
文章被收录于专栏:FlutterFlutter

介绍

「EPageView」 组件是 「Flutter Element」 组件系列中的 “横幅” 组件。

引入

「pubspec.yaml」 中依赖

代码语言:javascript
复制
element_ui: ^lastversion

最新的版本到pub上查看,pub地址:https://pub.dev/packages/element_ui

import

代码语言:javascript
复制
import 'package:element_ui/widgets.dart';

用法

构建统一的 「itemBuilder」,下面的例子统一使用这个「itemBuilder」

代码语言:javascript
复制
var itemBuilder = (context, index) {
  return Container(
    color: index % 2 == 0 ? Color(0xFF99a9bf) : Color(0xFFd3dce6),
    alignment: Alignment.center,
    child: Text(
      'PageView:$index',
      style: TextStyle(color: Colors.white, fontSize: 26),
    ),
  );
};

基础用法:

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
)

「scrollDirection」:设置滚动方向,默认水平。

设置为垂直:

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  scrollDirection: Axis.vertical,
)

「type」:设置卡片的类型。

  • 「normal」:默认样式,填充item。
  • 「card」:卡片样式。通常与 「viewportFraction」「cardScale」 配合使用。

「viewportFraction」:每个页面应占据的视口比例。

「cardScale」:每个页面缩放的比例。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  type: PageViewType.card,
  viewportFraction: .8,
  cardScale: .9,
)

「loop」:无限循环。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  loop: true,
)

滑动到最后一个的时候,下一个从第一个开始。

「autoPlay」:自动滚动。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  autoPlay: true,
  loop: true,
)

「autoPlayDuration」:切换页面的间隔,默认3秒。

「nextPageDuration」:当前页面开始切换到下一个页面的(动画)时常,默认300毫秒。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  autoPlay: true,
  loop: true,
  autoPlayDuration: Duration(seconds: 2),
  nextPageDuration: Duration(microseconds: 800),
)

「showIndicator」: 显示指示器,当前页面的指示器默认颜色为 「EleTheme」 的主题色,其他的颜色为白色。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showIndicator: true,
)

改变指示器的颜色:

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showIndicator: true,
  style: EPageViewStyle(
    indicatorColor: Colors.black,
    indicatorActiveColor: Colors.red,
  ),
)

「indicatorType」 :指示器的类型。

  • 「dot」:圆点。
  • 「line」:直线。
代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showIndicator: true,
  indicatorType: PageViewIndicatorType.line,
)

「indicatorPosition」: 指示器的位置。

  • 「inside」:内部。
  • 「outside」:外部。
代码语言:javascript
复制
Container(
  height: 200,
  color: Colors.grey.withOpacity(.4),
  child: EPageView(
    itemBuilder: itemBuilder,
    itemCount: 5,
    showIndicator: true,
    indicatorPosition: PageViewIndicatorPosition.outside,
  ),
)

垂直方向滚动,指示器的样式:

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showIndicator: true,
  scrollDirection: Axis.vertical,
)
代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showIndicator: true,
  indicatorType: PageViewIndicatorType.line,
  scrollDirection: Axis.vertical,
)
代码语言:javascript
复制
Container(
  height: 200,
  color: Colors.grey.withOpacity(.4),
  child: EPageView(
    itemBuilder: itemBuilder,
    itemCount: 5,
    showIndicator: true,
    scrollDirection: Axis.vertical,
    indicatorPosition: PageViewIndicatorPosition.outside,
  ),
)

「showControl」 :是否显示上/下一页,主要应用于宽屏应用,比如Web端。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showControl: true,
)

「nextWidget」: 自定义下一页组件。

「previousWidget」:自定义上一页组件。

代码语言:javascript
复制
EPageView(
  itemBuilder: itemBuilder,
  itemCount: 5,
  showControl: true,
  nextWidget: Text(
    '下一页',
    style: TextStyle(color: Colors.white),
  ),
  previousWidget: Text(
    '上一页',
    style: TextStyle(color: Colors.white),
  ),
)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老孟Flutter 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引入
  • 用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档