欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter實(shí)現(xiàn)自定義篩選框的示例代碼

 更新時(shí)間:2021年07月13日 11:29:30   作者:LDFeng  
本文主要介紹了Flutter實(shí)現(xiàn)自定義篩選框的示例代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、首先自定義篩選框的按鈕視圖,布局很簡單,一個(gè)listView就可以搞定。

1、在數(shù)據(jù)model中添加了一個(gè)selectedModel屬性,用來記錄當(dāng)前已選擇的篩選項(xiàng)(目前僅支持單選)。
2、當(dāng)按鈕數(shù)量小于3個(gè)時(shí),按鈕最大寬度為屏幕寬度的1/3;小于屏幕寬度時(shí),則為屏幕寬度/按鈕數(shù)量。

具體代碼如下:

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;
              });
            }));

二、定義篩選數(shù)據(jù)展示列表視圖。

首先在剩余視圖上定義一個(gè)背景黑色透明的遮罩層,然后在這層Container上展示listView,listView展示的數(shù)據(jù)為篩選的具體數(shù)據(jù)內(nèi)容。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]);
                    },
                  );
                }),
          ),
        ),
      ),
    );

到此這篇關(guān)于Flutter實(shí)現(xiàn)自定義篩選框的示例代碼的文章就介紹到這了,更多相關(guān)Flutter 自定義篩選框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android編程實(shí)現(xiàn)換膚功能實(shí)例

    Android編程實(shí)現(xiàn)換膚功能實(shí)例

    這篇文章主要介紹了Android編程實(shí)現(xiàn)換膚功能的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android換膚的具體步驟與相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • Android利用Gson解析嵌套多層的Json的簡單方法

    Android利用Gson解析嵌套多層的Json的簡單方法

    下面小編就為大家?guī)硪黄狝ndroid利用Gson解析嵌套多層的Json的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • Android中TextView顯示圓圈背景或設(shè)置圓角的方法

    Android中TextView顯示圓圈背景或設(shè)置圓角的方法

    TextView顯示文本給用戶,并允許他們選擇編輯。TextView是一個(gè)完整的文本編輯器,但是其基本類配置為不允許編輯。下面這篇文章主要給大家介紹了關(guān)于Android中TextView顯示圓圈背景或設(shè)置圓角的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Android BottomSheetDialog實(shí)現(xiàn)底部對話框的示例

    Android BottomSheetDialog實(shí)現(xiàn)底部對話框的示例

    這篇文章主要介紹了Android BottomSheetDialog實(shí)現(xiàn)底部對話框的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Android Compose 屬性動(dòng)畫使用探索詳解

    Android Compose 屬性動(dòng)畫使用探索詳解

    這篇文章主要為大家介紹了Android Compose 屬性動(dòng)畫使用探索詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android仿微信鍵盤切換效果

    Android仿微信鍵盤切換效果

    這篇文章主要為大家詳細(xì)介紹了Android仿微信鍵盤切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • android實(shí)現(xiàn)加載動(dòng)畫對話框

    android實(shí)現(xiàn)加載動(dòng)畫對話框

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)加載動(dòng)畫對話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android AutoCompleteTextView連接數(shù)據(jù)庫自動(dòng)提示的方法(附demo源碼下載)

    Android AutoCompleteTextView連接數(shù)據(jù)庫自動(dòng)提示的方法(附demo源碼下載)

    這篇文章主要介紹了Android AutoCompleteTextView連接數(shù)據(jù)庫自動(dòng)提示的方法,結(jié)合實(shí)例形式分析了AutoCompleteTextView操作數(shù)據(jù)庫的原理與具體技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-02-02
  • Android中ViewFlipper的使用及設(shè)置動(dòng)畫效果實(shí)例詳解

    Android中ViewFlipper的使用及設(shè)置動(dòng)畫效果實(shí)例詳解

    這篇文章主要介紹了Android中ViewFlipper的使用及設(shè)置動(dòng)畫效果的方法,以實(shí)例形式較為詳細(xì)的分析了ViewFlipper的功能、原理及設(shè)置與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android實(shí)現(xiàn)調(diào)用系統(tǒng)分享功能示例的總結(jié)

    Android實(shí)現(xiàn)調(diào)用系統(tǒng)分享功能示例的總結(jié)

    這篇文章主要介紹了通過Android調(diào)用系統(tǒng)分享文本信息、單張圖片、多個(gè)文件和指定分享到微信、QQ,同時(shí)分享圖片和文字的功能示例,小編覺得挺不錯(cuò),一起跟隨小編過來看看吧
    2018-05-05

最新評(píng)論