最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1、在數(shù)據(jù)model中添加了一個selectedModel屬性,用來記錄當前已選擇的篩選項(目前僅支持單選)。
2、當按鈕數(shù)量小于3個時,按鈕最大寬度為屏幕寬度的1/3;小于屏幕寬度時,則為屏幕寬度/按鈕數(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ù)展示列表視圖。

首先在剩余視圖上定義一個背景黑色透明的遮罩層,然后在這層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實現(xiàn)自定義篩選框的示例代碼的文章就介紹到這了,更多相關(guān)Flutter 自定義篩選框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Kotlin啟動協(xié)程的三種方式示例詳解

    Kotlin啟動協(xié)程的三種方式示例詳解

    這篇文章主要為大家介紹了Kotlin啟動協(xié)程的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 一文帶你看懂Android Application啟動流程是怎樣的

    一文帶你看懂Android Application啟動流程是怎樣的

    談到Android Application的啟動流程,很多文章都是各種源碼類和方法的一堆調(diào)用關(guān)系,這樣的文章就算看一百遍,也只是云里霧里。源碼得看,但是最好不要一下子深陷到源碼的細節(jié)之中,不可自拔。這里站在前人的基礎(chǔ)之上做一個總結(jié)
    2021-10-10
  • Kotlin基礎(chǔ)學(xué)習(xí)之位運算

    Kotlin基礎(chǔ)學(xué)習(xí)之位運算

    一提起位運算,人們往往想到它的高效性,無論是嵌入式編程還是優(yōu)化系統(tǒng)的核心代碼,適當?shù)倪\用位運算總是一種迷人的手段,下面這篇文章主要給大家介紹了關(guān)于Kotlin基礎(chǔ)學(xué)習(xí)之位運算的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-11-11
  • Android Studio實現(xiàn)帶邊框的圓形頭像

    Android Studio實現(xiàn)帶邊框的圓形頭像

    這篇文章主要為大家詳細介紹了Android Studio實現(xiàn)帶邊框的圓形頭像,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • OpenHarmony實現(xiàn)屏幕亮度動態(tài)調(diào)節(jié)方法詳解

    OpenHarmony實現(xiàn)屏幕亮度動態(tài)調(diào)節(jié)方法詳解

    大家在拿到dayu之后,都吐槽說,會經(jīng)常熄屏,不利于調(diào)試,那么有沒有一種辦法,可以讓app不熄屏呢,答案是有的,今天我們就來揭秘一下,如何控制屏幕亮度
    2022-11-11
  • android studio集成unity導(dǎo)出工程的實現(xiàn)

    android studio集成unity導(dǎo)出工程的實現(xiàn)

    本文主要介紹了android studio集成unity導(dǎo)出工程的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Android 同時setTag兩次保存多種值的示例代碼

    Android 同時setTag兩次保存多種值的示例代碼

    這篇文章主要介紹了Android 同時setTag兩次保存多種值的示例代碼,需要的朋友可以參考下
    2017-02-02
  • Android中使用ListView實現(xiàn)漂亮的表格效果

    Android中使用ListView實現(xiàn)漂亮的表格效果

    這篇文章主要介紹了Android中使用ListView實現(xiàn)漂亮的表格效果,本文用詳細的代碼實例創(chuàng)建了一個股票行情表格,需要的朋友可以參考下
    2014-10-10
  • Android實現(xiàn)定制返回按鈕動畫效果的方法

    Android實現(xiàn)定制返回按鈕動畫效果的方法

    這篇文章主要介紹了Android實現(xiàn)定制返回按鈕動畫效果的方法,涉及Android控件及動畫的相關(guān)操作技巧,需要的朋友可以參考下
    2016-02-02
  • Android協(xié)程作用域與序列發(fā)生器限制介紹梳理

    Android協(xié)程作用域與序列發(fā)生器限制介紹梳理

    協(xié)程的作用是什么?協(xié)程是一種輕量級的線程,解決異步編程的復(fù)雜性,異步的代碼使用協(xié)程可以用順序進行表達,文中通過示例代碼介紹詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-08-08

最新評論

新密市| 百色市| 六盘水市| 逊克县| 晋州市| 安仁县| 江西省| 新龙县| 张家口市| 景洪市| 黄山市| 万宁市| 博客| 靖宇县| 襄城县| 东明县| 龙山县| 广宁县| 大姚县| 永德县| 蓬安县| 阳东县| 佛山市| 林周县| 合水县| 门源| 称多县| 栾城县| 赤水市| 封开县| 隆子县| 宜州市| 炎陵县| 泰顺县| 东海县| 家居| 娄烦县| 南木林县| 恩施市| 南汇区| 沁水县|