马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- flutter pub add flutter_slidable
复制代码 导入
- import 'package:flutter_slidable/flutter_slidable.dart';
复制代码 使用
- import 'package:flutter/material.dart';import 'package:flutter_slidable/flutter_slidable.dart';
- void main() => runApp(const MyApp());class MyApp extends StatelessWidget { const MyApp({ Key? key, }) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: 'Slidable Example', home: Scaffold( body: ListView( children: [ Slidable( // Specify a key if the Slidable is dismissible. key: const ValueKey(0), // The start action pane is the one at the left or the top side. startActionPane: ActionPane( // A motion is a widget used to control how the pane animates. motion: const ScrollMotion(), // A pane can dismiss the Slidable. dismissible: DismissiblePane(onDismissed: () {}), // All actions are defined in the children parameter. children: const [ // A SlidableAction can have an icon and/or a label. SlidableAction( onPressed: doNothing, backgroundColor: Color(0xFFFE4A49), foregroundColor: Colors.white, icon: Icons.delete, label: 'Delete', ), SlidableAction( onPressed: doNothing, backgroundColor: Color(0xFF21B7CA), foregroundColor: Colors.white, icon: Icons.share, label: 'Share', ), ], ), // The end action pane is the one at the right or the bottom side. endActionPane: const ActionPane( motion: ScrollMotion(), children: [ SlidableAction( // An action can be bigger than the others. flex: 2, onPressed: doNothing, backgroundColor: Color(0xFF7BC043), foregroundColor: Colors.white, icon: Icons.archive, label: 'Archive', ), SlidableAction( onPressed: doNothing, backgroundColor: Color(0xFF0392CF), foregroundColor: Colors.white, icon: Icons.save, label: 'Save', ), ], ), // The child of the Slidable is what the user sees when the // component is not dragged. child: const ListTile(title: Text('Slide me')), ), Slidable( // Specify a key if the Slidable is dismissible. key: const ValueKey(1), // The start action pane is the one at the left or the top side. startActionPane: const ActionPane( // A motion is a widget used to control how the pane animates. motion: ScrollMotion(), // All actions are defined in the children parameter. children: [ // A SlidableAction can have an icon and/or a label. SlidableAction( onPressed: doNothing, backgroundColor: Color(0xFFFE4A49), foregroundColor: Colors.white, icon: Icons.delete, label: 'Delete', ), SlidableAction( onPressed: doNothing, backgroundColor: Color(0xFF21B7CA), foregroundColor: Colors.white, icon: Icons.share, label: 'Share', ), ], ), // The end action pane is the one at the right or the bottom side. endActionPane: ActionPane( motion: const ScrollMotion(), dismissible: DismissiblePane(onDismissed: () {}), children: const [ SlidableAction( // An action can be bigger than the others. flex: 2, onPressed: doNothing, backgroundColor: Color(0xFF7BC043), foregroundColor: Colors.white, icon: Icons.archive, label: 'Archive', ), SlidableAction( onPressed: doNothing, backgroundColor: Color(0xFF0392CF), foregroundColor: Colors.white, icon: Icons.save, label: 'Save', ), ], ), // The child of the Slidable is what the user sees when the // component is not dragged. child: const ListTile(title: Text('Slide me')), ), ], ), ), ); }}void doNothing(BuildContext context) {}
复制代码 ActionPane的参数分析
- ActionPane(
- key: Key(UniqueKey().toString()),
- extentRatio:0.2,
- // 滑动动效
- // DrawerMotion() StretchMotion()
- // motion: ScrollMotion(),
- motion: BehindMotion(),
- children: const [
- // SlidableAction(
- // // An action can be bigger than the others.
- // flex: 2,
- // onPressed: doNothing,
- // backgroundColor: Color(0xFF7BC043),
- // foregroundColor: Colors.white,
- // icon: Icons.archive,
- // label: 'Archive',
- // ),
- SlidableAction(
- onPressed: doNothing,
- backgroundColor: Color(0xFF0392CF),
- foregroundColor: Colors.white,
- icon: Icons.save,
- label: 'Save',
- ),
- ],
- ),
复制代码 实现只有同时只有一个滑块
SlidableAutoCloseBehavior 包住listview部分代码就可以
- body:SlidableAutoCloseBehavior(
- child: ListView.builder(
- controller: _scrollController,//需要controller ,不然异常
- itemCount: datas.length,
- key: Key(UniqueKey().toString()),
- itemBuilder: (BuildContext context, int index) {
- return Slidable(
- // 禁用滑动
- enabled:true,
- dragStartBehavior:DragStartBehavior.start,
- // key: ValueKey(index),
- // 设置只能有一个滑块
- key: Key(UniqueKey().toString()),
- // 右滑滑动显示的菜单
- // startActionPane: ActionPane(
- // key: Key(UniqueKey().toString()),
- // // A motion is a widget used to control how the pane animates.
- // motion: const ScrollMotion(),
- // // A pane can dismiss the Slidable.
- // dismissible: DismissiblePane(onDismissed: () {
- // print("点击了");
- // }),
- // // All actions are defined in the children parameter.
- // children: const [
- // // A SlidableAction can have an icon and/or a label.
- // SlidableAction(
- // onPressed: doNothing,
- // backgroundColor: Color(0xFFFE4A49),
- // foregroundColor: Colors.white,
- // icon: Icons.delete,
- // label: 'Delete',
- // ),
- // SlidableAction(
- // onPressed: doNothing,
- // backgroundColor: Color(0xFF21B7CA),
- // foregroundColor: Colors.white,
- // icon: Icons.share,
- // label: 'Share',
- // ),
- // ],
- // ),
- //左滑划出的菜单
- endActionPane: ActionPane(
- key: Key(UniqueKey().toString()),
- // 菜单宽度
- extentRatio:0.2,
- dragDismissible:false,
- // 滑动动效
- // DrawerMotion() StretchMotion()
- // motion: ScrollMotion(),
- motion: BehindMotion(),
- children: const [
- // SlidableAction(
- // // An action can be bigger than the others.
- // flex: 2,
- // onPressed: doNothing,
- // backgroundColor: Color(0xFF7BC043),
- // foregroundColor: Colors.white,
- // icon: Icons.archive,
- // label: 'Archive',
- // ),
- SlidableAction(
- onPressed: doNothing,
- backgroundColor: Color(0xFF0392CF),
- foregroundColor: Colors.white,
- icon: Icons.save,
- label: 'Save',
- ),
- ],
- ),
- child: ListTile(title: Text('Slide me')),
-
- );
- },
- ),
- )
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |