美文网首页FlutterFlutter
Flutter 分段控制器 HBSegmentedControl

Flutter 分段控制器 HBSegmentedControl

作者: 尤先森 | 来源:发表于2020-07-07 10:42 被阅读0次

    起因

    最近在用flutter 开发一个web页面,然后遇到界面需要用到iOS中的UISegmentedControl
    就像这样


    image.png

    Flutter中有CupertinoSegmentedControl,于是就直接用了。

    我先在Flutter移动端开发好了界面,一切显示正常,就像这样

    image.png

    没啥问题。

    但是当我把组件迁移到web端时,出了问题。

    image.png

    估计短时间内也得不到解决,于是决定自己造个轮子。

    先展示一下成果

    image.png

    优化

    原先CupertinoSegmentedControl代码冗余,数据处理相对麻烦。需要传入一个Map<String, Widget>类型的参数作为数据源。

    Widget segmentControll(
          List titles, String groupValue, Function onValueChange) {
        TextStyle style = TextStyle(fontSize: 14);
        Color grey = Color.fromARGB(255, 101, 102, 103);
        List<String> keys = ["a", "b", "c", "d"];
        Map<String, Widget> children = {};
        for (var i = 0; i < titles.length; i++) {
          String str = keys[I];
          Widget w = Container(
              alignment: Alignment.center,
              width: 56.0,
              height: 32,
              child: Text(
                titles[I],
                style: style,
              ));
          // Map item = {str:w};
          // children.add(item);
          children[str] = w;
        }
        return CupertinoSegmentedControl(
            onValueChanged: onValueChange,
            pressedColor: Colors.white,
            borderColor: grey,
            selectedColor: grey,
            groupValue: groupValue,
            children: children);
      }
    

    我自己的轮子,只需要一个List<String>即可,代码量减少了许多

    Widget segmentControll(List titles, String groupValue, Function onValueChange) {
        Color grey = Color.fromARGB(255, 101, 102, 103);
        return HBSegmentedControl(titleList: titles,selectedColor: grey,onTap: (index){
          print(index);
        });
      }
    

    集成

    PUB 地址

    https://pub.flutter-io.cn/packages/hbsegmented_control#-readme-tab-

    在pubspec.yaml文件中添加这段代码

    dependencies:
      hbsegmented_control: ^0.0.1
    

    相关文章

      网友评论

        本文标题:Flutter 分段控制器 HBSegmentedControl

        本文链接:https://www.haomeiwen.com/subject/fgqaqktx.html