我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Flutter实现自定义筛选框的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Flutter实现自定义筛选框的方法

本篇内容主要讲解“Flutter实现自定义筛选框的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter实现自定义筛选框的方法”吧!

目录
  • 一、首先自定义筛选框的按钮视图,布局很简单,一个listView就可以搞定。

  • 二、定义筛选数据展示列表视图。

一、首先自定义筛选框的按钮视图,布局很简单,一个listView就可以搞定。

在数据model中添加了一个selectedModel属性,用来记录当前已选择的筛选项(目前仅支持单选)。
2、当按钮数量小于3个时,按钮最大宽度为屏幕宽度的1/3;小于屏幕宽度时,则为屏幕宽度/按钮数量。

具体代码如下:

var text = model.selectedFilterModel != null        ? model.selectedFilterModel.dictValue        : model.name ?? "";    return Container(        padding: EdgeInsets.symmetric(horizontal: 20),        constraints: BoxConstraints(            maxWidth: MediaQuery.of(context).size.width /                (widget.dataList.length > 3 ? 3 : widget.dataList.length),            maxHeight: widget.viewHeight),        color: Colors.white,        child: InkWell(            child: Row(              mainAxisAlignment: MainAxisAlignment.center,              children: [                Text(                  text,                  maxLines: 1,                  overflow: TextOverflow.ellipsis,                  style: TextStyle(                      fontSize: widget.textSize,                      color: model.isSelected                          ? widget.textSelectColor                          : widget.textColor),                ),                SizedBox(                  width: 4,                ),                model.isSelected == true                    ? Icon(Icons.keyboard_arrow_down,                        color: widget.textSelectColor)                    : Icon(Icons.keyboard_arrow_up, color: widget.textColor),              ],            ),            onTap: () {              setState(() {                if (_selectModel != null && _selectModel != model) {                  _selectModel.isSelected = false;                }                model.isSelected = !model.isSelected;                _selectModel = model;              });            }));

二、定义筛选数据展示列表视图。

首先在剩余视图上定义一个背景黑色透明的遮罩层,然后在这层Container上展示listView,listView展示的数据为筛选的具体数据内容。Visibility控制整体视图是否可见,具体代码如下:

  visible:          Provider.of<FilterModelProvider>(context).isShowFilterOptionsView ??              false,      child: GestureDetector(        onTap: () {          Provider.of<FilterModelProvider>(context, listen: false)              .hideFilterOptionsView();        },        child: Container(          color: Colors.black54,          child: Container(            margin: EdgeInsets.only(                bottom: SizeFit.screenHeight -                    widget.filterButtonViewHeight -                    SizeFit.appBarHeight -                    listViewHeight +                    animation.value),            color: Colors.white,            child: ListView.builder(                padding: EdgeInsets.zero,                itemCount: _dataList.length,                itemBuilder: (BuildContext context, int index) {                  return InkWell(                    child: Container(                      height: widget.listHeight,                      child: Column(                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,                        // crossAxisAlignment: CrossAxisAlignment.center,                        children: [                          Text(                            _dataList[index].dictValue,                            overflow: TextOverflow.ellipsis,                            maxLines: 1,                            style: TextStyle(                                fontSize: 16,                                color: Colors.black87,                                fontWeight: FontWeight.normal),                          ),                          Divider(                            height: 1,                            indent: 1,                          )                        ],                      ),                    ),                    onTap: () {                      Provider.of<FilterModelProvider>(context, listen: false)                          .selectFilterOption(_dataList[index]);                    },                  );                }),          ),        ),      ),    );

到此,相信大家对“Flutter实现自定义筛选框的方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Flutter实现自定义筛选框的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Flutter实现自定义筛选框的方法

本篇内容主要讲解“Flutter实现自定义筛选框的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter实现自定义筛选框的方法”吧!目录一、首先自定义筛选框的按钮视图,布局很简单,一个
2023-06-20

Flutter怎么实现自定义下拉选择框

这篇“Flutter怎么实现自定义下拉选择框”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Flutter怎么实现自定义下拉选
2023-06-30

Flutter怎么实现自定义搜索框AppBar

这篇文章主要讲解了“Flutter怎么实现自定义搜索框AppBar”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter怎么实现自定义搜索框AppBar”吧!介绍开发中,页面头部为搜索
2023-06-30

java实现自定义日期选择器的方法实例

前言本文主要介绍的是利用java swing写的一个日期选择器.,Swing 是一个为Java设计的GUI工具包,Swing是JAVA基础类的一部分,Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表,下面话不多说了,
2023-05-31

Flutter构建自定义Widgets的方法是什么

这篇文章主要讲解了“Flutter构建自定义Widgets的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter构建自定义Widgets的方法是什么”吧!一.组合widge
2023-06-26

Android自定义ViewGroup的实现方法

在android中提供了常见的几种ViewGroup的实现,包括LinearLayout、Relativeayout、FrameLayout等。这些ViewGroup可以满足我们一般的开发需求,但是对于界面要求复杂的,这几个布局就
2022-06-06

Android自定义Style实现方法

styles.xml如下: [html] 代码如下: