Flutter左侧滚动操作插件left_scroll_actions的使用
Flutter左侧滚动操作插件left_scroll_actions的使用
描述
left_scroll_actions
是一款仿微信效果的Flutter左滑菜单插件。现在支持iOS的展开与弹性效果,可以很轻松地打开关闭指定组件,或者在同一个列表内通过tag实现联动关闭(打开一个关闭其他)。
安装
将以下内容添加到你的pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
left_scroll_actions: any
然后运行flutter packages get
即可。
使用方法
CupertinoLeftScroll (1.4.0)
下面是一个简单的例子,展示了如何使用CupertinoLeftScroll
来创建一个带有左滑按钮的行。每个行都有不同的key,并且可以通过相同的closeTag实现联动关闭。
final key = Key('MY CUSTOM KEY, use id/title');
final closeTag = LeftScrollCloseTag('MyTestListTag');
// widget
CupertinoLeftScroll(
// 每个Row必须有不同的key。
key: key,
// 当另一个有相同closeTag的组件打开时,其他有着相同closeTag的组件会自动关闭。
closeTag: closeTag,
buttonWidth: 80,
child: Container(
height: 60,
color: Colors.white,
alignment: Alignment.center,
child: Text('👈 Try Scroll Left'),
),
onTap: () {
print('tap row');
closeTag.of(key).open();
},
buttons: <Widget>[
LeftScrollItem(
text: 'edit',
color: Colors.orange,
onTap: () {
print('edit');
closeTag.of(key).close();
},
),
LeftScrollItem(
text: 'delete',
color: Colors.red,
onTap: () {
// 带动画关闭并执行删除操作
closeTag.of(key).remove(() async {
print('delete');
setState(() {
list.remove(id);
});
return true;
});
},
),
],
onTap: () {
print('tap row');
},
);
LeftScroll
你可以以同样的方式使用LeftScroll
组件,通过实现onScroll
函数来自定义滑动动画。
弹性 (1.5.0)
为了获得弹性的滑动效果,设置CupertinoLeftScroll
的bounce
参数为true
,并通过bounceStyle
参数控制弹性效果。
左滑联动列表(1.3.0)
对于提供同一个LeftScrollCloseTag
的LeftScroll
组件,在一个打开时,可以关闭其他组件。例如,要关闭特定的行,可以使用以下代码:
// 找到对应tag与key的row状态,改变状态即可
LeftScrollGlobalListener.instance.targetStatus(tag, key).value = LeftScrollStatus.close;
LSTag("list").of(Key(id)).to(LeftScrollStatus.close)
示例代码
这里是一个完整的示例应用程序,演示了如何在Flutter项目中使用left_scroll_actions
插件:
import 'package:flutter/material.dart';
import 'package:left_scroll_actions/cupertinoLeftScroll.dart';
import 'package:left_scroll_actions/left_scroll_actions.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Left Scroll Actions'),
),
backgroundColor: Color(0xFFf5f5f4),
body: ListView(
children: <Widget>[
Container(
padding: EdgeInsets.all(12),
child: MaterialButton(
color: Colors.blue,
child: Text(
'ListView Usage Demo',
style: TextStyle(color: Colors.white),
),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => ListPage(),
));
},
),
),
Container(height: 50),
Container(
padding: EdgeInsets.only(top: 12, left: 8, bottom: 8),
child: Text('These widget can scroll to actions.'),
),
LeftScroll(
buttonWidth: 80,
child: Container(
height: 60,
color: Colors.white,
alignment: Alignment.center,
child: Text('👈 Try Scroll Left'),
),
buttons: <Widget>[
LeftScrollItem(
text: 'delete',
color: Colors.red,
onTap: () {
print('delete');
},
),
LeftScrollItem(
text: 'Edit',
color: Colors.orange,
onTap: () {
print('edit');
},
),
],
onTap: () {
print('tap row');
},
),
CupertinoLeftScroll(
buttonWidth: 60,
child: Container(
height: 60,
color: Colors.white,
alignment: Alignment.center,
child: Text('👈 Try Scroll Left(iOS style)'),
),
buttons: <Widget>[
LeftScrollItem(
text: 'Delete',
color: Colors.red,
onTap: () {
print('delete');
},
),
LeftScrollItem(
text: 'Edit',
color: Colors.orange,
onTap: () {
print('edit');
},
),
],
onTap: () {
print('tap row');
},
),
CupertinoLeftScroll(
buttonWidth: 60,
bounce: true,
child: Container(
height: 60,
color: Colors.white,
alignment: Alignment.center,
child: Text('👈 Try Scroll Left(iOS style with bounce)'),
),
buttons: <Widget>[
LeftScrollItem(
text: 'Delete',
color: Colors.red,
onTap: () {
print('delete');
},
),
LeftScrollItem(
text: 'Edit',
color: Colors.orange,
onTap: () {
print('edit');
},
),
],
onTap: () {
print('tap row');
},
),
],
),
);
}
}
这个例子包含了不同类型的LeftScroll
和CupertinoLeftScroll
用法,包括基本的左滑操作、带弹性的滑动效果以及iOS风格的左滑菜单。希望这些信息可以帮助你更好地理解和使用left_scroll_actions
插件。
更多关于Flutter左侧滚动操作插件left_scroll_actions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter左侧滚动操作插件left_scroll_actions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用left_scroll_actions
插件来实现左侧滚动操作的代码示例。这个插件允许你在列表滚动时,在左侧显示可操作的按钮或图标。
首先,你需要在你的pubspec.yaml
文件中添加left_scroll_actions
依赖:
dependencies:
flutter:
sdk: flutter
left_scroll_actions: ^最新版本号 # 请替换为最新的版本号
然后运行flutter pub get
来安装依赖。
以下是一个简单的示例代码,展示了如何使用left_scroll_actions
插件:
import 'package:flutter/material.dart';
import 'package:left_scroll_actions/left_scroll_actions.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Left Scroll Actions Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<String> items = List.generate(100, (index) => "Item ${index + 1}");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Left Scroll Actions Demo'),
),
body: LeftScrollActions<String>(
data: items,
itemBuilder: (context, data, index) {
return ListTile(
title: Text(data),
);
},
actionBuilder: (context, data, index) {
return IconButton(
icon: Icon(Icons.delete),
onPressed: () {
// 在这里处理点击事件,比如删除项目
print("Deleted: $data");
setState(() {
items.removeAt(index);
});
},
);
},
actionWidth: 56.0,
actionColor: Colors.red,
itemPadding: EdgeInsets.symmetric(horizontal: 16.0),
),
);
}
}
在这个示例中,我们创建了一个包含100个项目的列表。每个项目旁边都有一个删除按钮,当点击删除按钮时,该项目将从列表中移除。
-
LeftScrollActions
是插件提供的主要组件,它接收一个数据列表(data
),并需要两个构建器函数:itemBuilder
:用于构建每个列表项。actionBuilder
:用于构建每个列表项旁边的操作按钮。
-
actionWidth
定义了操作按钮的宽度。 -
actionColor
定义了操作按钮的颜色。 -
itemPadding
定义了每个列表项的填充。
请确保在实际项目中替换最新版本号
为left_scroll_actions
插件的实际最新版本号。
希望这个示例对你有帮助!