flutter好用的輪子推薦九-flutter可定制的上下滑出抽屜

前言

Flutter是谷歌的移動UI框架驾锰,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面卸留。

IT界著名的尼古拉斯·高爾包曾說:輪子是IT進步的階梯!熱門的框架千篇一律椭豫,好用輪子萬里挑一耻瑟!Flutter作為這兩年開始崛起的跨平臺開發(fā)框架,其第三方生態(tài)相比其他成熟框架還略有不足赏酥,但輪子的數(shù)量也已經(jīng)很多了喳整。本系列文章挑選日常app開發(fā)常用的輪子分享出來,給大家提高搬磚效率裸扶,同時也希望flutter的生態(tài)越來越完善框都,輪子越來越多。

本系列文章準備了超過50個輪子推薦呵晨,工作原因魏保,盡量每1-2天出一篇文章。

tip:本系列文章合適已有部分flutter基礎(chǔ)的開發(fā)者摸屠,入門請戳:flutter官網(wǎng)

正文

輪子

  • 輪子名稱:slide_up_panel
  • 輪子概述:flutter可定制的上下滑出抽屜.
  • 輪子作者:akshath.r.jain@gmail.com
  • 推薦指數(shù):★★★★
  • 常用指數(shù):★★★★
  • 效果預(yù)覽:


    效果圖

安裝

dependencies:
  sliding_up_panel: ^0.3.6
import 'package:sliding_up_panel/sliding_up_panel.dart';

基本使用

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("SlidingUpPanelExample"),
    ),
    body: SlidingUpPanel(
      panel: Center(
        child: Text("這里是抽屜區(qū)"),
      ),
      body: Center(
        child: Text("這么是頁面區(qū)"),
      ),
    ),
  );
}

參數(shù)配置

通過選項可以實現(xiàn)更多控制:

參數(shù) 描述
panel (必需)滑入視圖的小部件谓罗。當panel折疊且如果collapsed為null時,將顯示此Widget的頂部餐塘;否則妥衣,collapsed將顯示在此小部件的頂部。
collapsed panel折疊時戒傻,小部件顯示在上方税手。隨著panel打開,此效果逐漸消失需纳。
body 位于滑動面板下方的小部件芦倒。該小部件會自動調(diào)整大小以填充屏幕。
minHeight 完全折疊時滑動面板的高度不翩。
maxHeight 完全打開時滑動面板的高度兵扬。
border 在滑動面板上繪制邊框麻裳。
borderRadius 如果不為空,則以此將滑板面板繪制圓角器钟。
boxShadow 滑動面板表后面投射的陰影津坑。
color 填充滑動面板背景的顏色
padding 滑動面板padding
margin 滑動面板margin
renderPanelSheet 設(shè)置為false可不渲染panel位于其上的圖紙。這意味著傲霸,只有body疆瑰,collapsed和panel窗口小部件會被渲染。如果要實現(xiàn)浮動效果或需要對滑動面板的外觀進行更多自定義昙啄,請將其設(shè)置為false穆役。
panelSnapping 設(shè)置為false可禁用面板快速打開或關(guān)閉。
backdropEnabled 如果不為空梳凛,則body在面板滑動打開時在上顯示暗陰影耿币。
backdropColor 陰影顏色。
backdropOpacity 陰影透明度韧拒,0.0-1.0
backdropTapClosesPanel 是否輕按背景關(guān)閉面板淹接。默認為true。
controller 控制器
onPanelSlide 如果不為null叭莫,則在面板隨面板的當前位置滑動時調(diào)用此回調(diào)蹈集。該位置是0.0和1.0之間的雙精度數(shù),其中0.0完全折疊雇初,而1.0完全打開拢肆。
onPanelOpened 如果非null,則在面板完全打開時調(diào)用此回調(diào)靖诗。
onPanelClosed 如果為非null郭怪,則在面板完全折疊時調(diào)用此回調(diào)。
parallaxEnabled 如果非null和true刊橘,則在面板向上滑動時鄙才,SlidingUpPanel會顯示視差效果。本質(zhì)上促绵,隨著面板的滑動攒庵,身體也會向上滑動。
parallaxOffset 允許根據(jù)面板向上/向下滑動的百分比指定視差效果的程度败晴。推薦值在0.0和1.0之間浓冒,其中0.0為無視差,而1.0則模仿一對一的滾動效果尖坤。默認為10%視差稳懒。
isDraggable 允許切換SlidingUpPanel的可拖動性。將此設(shè)置為false可以防止用戶上下拖動面板慢味。默認為true场梆。
slideDirection 抽屜的方向: SlideDirection.UP or SlideDirection.DOWN.
defaultPanelState 面板的默認狀態(tài)墅冷;PanelState.OPEN或PanelState.CLOSED。此值的默認值PanelState.CLOSED表示面板處于關(guān)閉位置或油,必須將其打開寞忿。PanelState.OPEN表示默認情況下面板是打開的,并且必須由用戶滑動關(guān)閉装哆。

實踐:仿頭條小視頻的評論抽屜

class ToutiaoDemo extends StatefulWidget {
    ToutiaoDemo({Key key}) : super(key: key);

    @override
    _ToutiaoDemoState createState() => _ToutiaoDemoState();
}

class _ToutiaoDemoState extends State<ToutiaoDemo> {
    PanelController panel = new PanelController();
    double offsetDistance = 0.0;
    double offsetY=0;

    @override
    Widget build(BuildContext context) {
        return Container(
            child: SlidingUpPanel(
                controller:panel,
                minHeight: 0,
                borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(24.0),
                    topRight: Radius.circular(24.0),
                ),
                body: GestureDetector(
                    child: new ConstrainedBox(
                        constraints: BoxConstraints.expand(),
                        child: new Image.asset(
                        "assets/img1.jpg",
                            fit: BoxFit.fill,
                        ),
                    ),
                    onTap: (){
                        panel.close();
                    },
                    onVerticalDragDown: (details){
                        // print(details.globalPosition.dy);
                        offsetDistance=details.globalPosition.dy;
                    },
                    onVerticalDragUpdate: (details){
                        offsetY=details.globalPosition.dy-offsetDistance;
                        if(offsetY>0){
                            print("向下"+offsetY.toString());
                        }else{
                            print("向上"+offsetY.toString());
                            double position=offsetY.abs()/300;
                            position=position>1?1:position;
                            panel.setPanelPosition(position);
                            if(position>0.4){
                                panel.open();
                            }
                        }
                        
                    },
                ),
                panel: Container(
                    child: Center(
                        child: Text("評論區(qū)",style: TextStyle(color: Colors.grey,fontSize: 16,fontWeight: FontWeight.normal,decoration:TextDecoration.none)),
                    ),
                ),
            ),
            
        );
    }
}

效果圖:


效果圖

結(jié)尾

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绢要,一起剝皮案震驚了整個濱河市瞎嬉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌能曾,老刑警劉巖宵溅,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凌简,死亡現(xiàn)場離奇詭異,居然都是意外死亡恃逻,警方通過查閱死者的電腦和手機雏搂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寇损,“玉大人凸郑,你說我怎么就攤上這事∶校” “怎么了芙沥?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浊吏。 經(jīng)常有香客問我而昨,道長,這世上最難降的妖魔是什么找田? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任歌憨,我火速辦了婚禮,結(jié)果婚禮上墩衙,老公的妹妹穿的比我還像新娘务嫡。我一直安慰自己,他們只是感情好漆改,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布心铃。 她就那樣靜靜地躺著,像睡著了一般籽懦。 火紅的嫁衣襯著肌膚如雪于个。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天暮顺,我揣著相機與錄音厅篓,去河邊找鬼秀存。 笑死,一個胖子當著我的面吹牛羽氮,可吹牛的內(nèi)容都是我干的或链。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼档押,長吁一口氣:“原來是場噩夢啊……” “哼澳盐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起令宿,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤叼耙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粒没,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筛婉,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年癞松,在試婚紗的時候發(fā)現(xiàn)自己被綠了爽撒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡响蓉,死狀恐怖硕勿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枫甲,我是刑警寧澤源武,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站言秸,受9級特大地震影響软能,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜举畸,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一查排、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抄沮,春花似錦跋核、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至率挣,卻和暖如春刻伊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工捶箱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留智什,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓丁屎,卻偏偏與公主長得像荠锭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晨川,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容