美文网首页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

    起因 最近在用flutter 开发一个web页面,然后遇到界面需要用到iOS中的UISegmentedContro...

  • UIControl

    UIControl 控制类 主要学习了分段控制器、滑块控制器、页码控制器、开关、步进控制器 一、分段控制器UISe...

  • 第二周第二天 开关,分段控制器

    1,开关2,分段控制器 设置选中第几个分段控制器 设置方法 开关的关闭状态 设置方法

  • 发现简书iOS版本一个bug

    首先进入文章分段控制器页,然后点击动态分段控制器按钮,在scrollview左移瞬间下拉,bug出现。

  • 月下乔安

    //初始化分段控制器 -(UISegmentedControl * )segment { if(!_segme...

  • 分段控制器

    在此之前在 AppDelegate.m 中设置导航才可以完成效果 // 这个我们的ViewController 在...

  • iOS分段控制器 - UISegmentedControl

    简单的分段控制器 实现在导航条上

  • iOS 自定义分段控制器

    最近做项目时遇到一些问题,就是项目里原有分段控制器的适用范围有些局限,虽然网上也有很多分段控制器的demo,但自己...

  • ios 分段控制器

    手动导入第三方SCNavTabBar 导入头文件#import "SCNavTabBarController.h"...

  • IOS分段控制器

    首先在AppDelegate.m中修改根视图AppDelegate.m中 ViewController.m中 新建...

网友评论

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

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