Flutter是谷歌的移動UI框架,能夠快速在iOS和Android上構建高質量的原生用戶界面。git
IT界著名的尼古拉斯·高爾包曾說:輪子是IT進步的階梯!熱門的框架千篇一概,好用輪子萬里挑一!Flutter做爲這兩年開始崛起的跨平臺開發框架,其第三方生態相比其餘成熟框架還略有不足,但輪子的數量也已經不少了。本系列文章挑選平常app開發經常使用的輪子分享出來,給你們提升搬磚效率,同時也但願flutter的生態愈來愈完善,輪子愈來愈多。github
本系列文章準備了超過50個輪子推薦,工做緣由,儘可能每1-2天出一篇文章。app
tip:本系列文章合適已有部分flutter基礎的開發者,入門請戳:flutter官網框架
dependencies:
flutter_slidable: ^0.5.4
複製代碼
import 'package:flutter_slidable/flutter_slidable.dart';
複製代碼
您能夠經過Slidable兩種不一樣的方式建立一個:ide
Slidable須要知足如下條件:函數
經過direction參數能夠選擇是否要在水平(默認)或垂直滑動時顯示動做。佈局
示例:動畫
ListView(
children: <Widget>[
Slidable(
actionPane: SlidableScrollActionPane(),//滑出選項的面板 動畫
actionExtentRatio: 0.25,
child: ListItem(title:title),
actions: <Widget>[//左側按鈕列表
IconSlideAction(
caption: 'Archive',
color: Colors.blue,
icon: Icons.archive,
onTap: () => _showSnackBar('Archive'),
),
IconSlideAction(
caption: 'Share',
color: Colors.indigo,
icon: Icons.share,
onTap: () => _showSnackBar('Share'),
),
],
secondaryActions: <Widget>[//右側按鈕列表
IconSlideAction(
caption: 'More',
color: Colors.black45,
icon: Icons.more_horiz,
onTap: () => _showSnackBar('More'),
),
IconSlideAction(
caption: 'Delete',
color: Colors.red,
icon: Icons.delete,
closeOnTap: false,
onTap: (){
_showSnackBar('Delete');
},
),
],
)
]
)
複製代碼
按鈕項使用兩種widget來構建:ui
內置四種滑動的動畫:(不仔細看很難看出區別來)spa
設置dismissal屬性便可啓用滑動刪除動畫:
dismissal: SlidableDismissal(
child: SlidableDrawerDismissal(),
onWillDismiss: (actionType){
return showDialog<bool>(
context: context,
builder: (context) {
return AlertDialog(
title: Text('提示?'),
content: Text('肯定刪除該條記錄?'),
actions: <Widget>[
FlatButton(
child: Text('取消'),
onPressed: () => Navigator.of(context).pop(false),
),
FlatButton(
child: Text('肯定'),
onPressed: () => Navigator.of(context).pop(true),
),
],
);
}
);
},
onDismissed: (actionType) {
print(actionType);
},
),
複製代碼
更多參數配置請查看倉庫地址:pub.flutter-io.cn/packages/fl…