Element 系列组件之 ERate 评分组件

2021-12-27 13:21:28 浏览数 (1)

介绍

「ERate」 组件是 「Flutter Element」 组件系列中的评分组件。

引入

「pubspec.yaml」 中依赖

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

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

import

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

用法

基础用法

代码语言:javascript复制
ERate(value: 3.7)

「value」:评分值,其大小和 **count **有关联,**count **默认为5。

「count」: 星星个数。

代码语言:javascript复制
ERate(value: 5.5,count: 6,)

「showLabel」:是否显示label。

代码语言:javascript复制
ERate(
  value: 3.7,
  showLabel: true,
)

「labelBuilder」:自定义lable。

代码语言:javascript复制
ERate(
  value: 5,
  showLabel: true,
  labelBuilder: (double value) {
    String s = '';
    if (value <= 1) {
      s = '极差';
    } else if (value <= 2) {
      s = '失望';
    } else if (value <= 3) {
      s = '一般';
    } else if (value <= 4) {
      s = '满意';
    } else if (value <= 5) {
      s = '惊喜';
    }
    return Text(s);
  },
)

「itemSize」:每一项的大小,默认40。

代码语言:javascript复制
ERate(
  value: 3.7,
  itemSize: 60,
)

上边为默认,下边设置了60。

「iconType」:评分图标类型。

  • 「star」:星星图标。
  • 「sentiment」:情绪图标,不同的值,图标不同。
  • 「sameSentiment」:情绪图标,不同的值,图标相同。
代码语言:javascript复制
ERate(
  value: 5,
  iconType: RateIconType.sentiment,
)
代码语言:javascript复制
ERate(
  value: 5,
  iconType: RateIconType.sameSentiment,
)

「space」:每一个item直接的间隔。

代码语言:javascript复制
ERate(
  value: 3.5,
  space: 12,
)

「enable」:是否可用,设置为false时,不可改变其值。

代码语言:javascript复制
ERate(
  value: 3.5,
  enable: false,
)

「onChanged」: 值发生变化时回调。

代码语言:javascript复制
ERate(
  value: 3.5,
  onChanged: (value){
    print('$value');
  },
)

「child」「itemBuilder」 都是允许用户自定义 item的属性,但「itemBuilder」优先级高于 「child」,一般情况下 「child」 用于每一个 Item 都一样的情况, 「itemBuilder」 用于每一个 Item 都不一样的情况。

代码语言:javascript复制
ERate(
  value: 3.5,
  child: SizedBox(
    width: 40,
    height: 40,
    child: ColoredBox(
      color: Colors.white,
    ),
  ),
)
代码语言:javascript复制
ERate(
  value: 3.5,
  itemBuilder: (context, index) {
    return Text('$index');
  },
)

自定义 Item 组件的颜色是不起作用的,改变颜色需要通过 「style」 属性:

  • 「activeColor」 : 激活状态的颜色,默认 「Colors.amber」
  • 「inactiveColor」:未激活状态的颜色,默认 「EleTheme」 主题中 「borderColorLighter」的颜色。
代码语言:javascript复制
ERate(
  value: 3.5,
  style: ERateStyle(
    activeColor: Colors.red,
    inactiveColor: Colors.black,
  ),
)

0 人点赞