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

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

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

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

1、在數(shù)據(jù)model中添加了一個(gè)selectedModel屬性,用來(lái)記錄當(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控制整體視圖是否可見(jiàn),具體代碼如下:

      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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    一文帶你看懂Android Application啟動(dòng)流程是怎樣的

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

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

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

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

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

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

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

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

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

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

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

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

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

    Android實(shí)現(xiàn)定制返回按鈕動(dòng)畫(huà)效果的方法

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

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

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

最新評(píng)論

临颍县| 安溪县| 娄烦县| 临朐县| 宕昌县| 都昌县| 贺州市| 芒康县| 巴里| 和龙市| 淮滨县| 张家界市| 连州市| 蓬安县| 邹平县| 文水县| 旬邑县| 永平县| 什邡市| 桦南县| 千阳县| 营山县| 丹东市| 平远县| 尚义县| 安阳县| 怀安县| 仙桃市| 离岛区| 广饶县| 西盟| 福鼎市| 西乡县| 淮南市| 嘉义县| 镇平县| 神木县| 平山县| 海门市| 剑阁县| 榆中县|