Flutter滑动卡片插件swipeable_card的使用
Swipeable Card (v1.x.x)
为游戏或交互式引导屏幕添加类似滑动手势的卡片小部件。
目录
🎮 示例
Demo
SwipeableWidget(适合高性能设备,如iPhone)
SwipeableWidgetSlide(适合性能较低的设备,如旧款Android设备)
- SwipeableWidgetSlide的演示图将稍后添加。
如果无法看到演示,请查看仓库。
应用示例
Swipeable Widget 在以下应用中使用:
- Shots
- 创建PR以添加您的应用!
📒 文档
安装
在 pubspec.yaml
中添加 swipeable_card
:
dependencies:
flutter:
sdk: flutter
# 添加以下行
swipeable_card: <最新版本>
添加到您的应用
Swipeable 小部件必须放置在一个 Stack
中,例如:
Stack(
children: <Widget>[
SwipeableWidget(
// 参数...
child: someChildWidget(),
),
],
)
在上述示例中,将 someChildWidget()
替换为可以滑动的小部件(例如,类似于扑克牌的小部件)。
警告:虽然 SwipeableWidget
在iPhone上运行速度较快,但在旧款Android设备上可能会较慢。我正在开发 SwipeableWidgetSlide
,这是一种可以在旧款Android设备上使用的替代方案。
参数
int animationDuration
- 动画持续时间,决定:
- 小部件回到原点所需的时间。
- 小部件从屏幕上动画离开所需的时间。
默认值:700
double horizontalThreshold
- 水平滑动的阈值位置,超过该位置时调用
onHorizontalSwipe
函数。
默认值:0.85
double verticalThreshold
- 垂直滑动的阈值位置,超过该位置时调用
onVerticalSwipe
函数。
未实现
默认值:0.95
Function onLeftSwipe
- 当卡片向左滑动超过水平阈值时调用的函数。如果您正在制作卡牌游戏,这里可以调用下一张卡的函数。
Function onRightSwipe
- 类似于
onLeftSwipe
SwipeableWidgetController swipeableWidgetController
- 可以自动滑动卡片(无需用户交互)的控制器。
方法包括:
_swipeableWidgetController.triggerSwipeLeft()
_swipeableWidgetController.triggerSwipeRight()
另外两个方法也存在,但尚未实现:
_swipeableWidgetController.triggerSwipeTop()
_swipeableWidgetController.triggerSwipeBottom()
double scrollSensitivity
- 滑动灵敏度
Widget child (必需)
- 将要滑动的小部件。
List children
- 背后的子部件。
这些可以是卡牌游戏中的其他卡牌。
基本示例
SwipeableWidget(
child: CardExample(text: "This is card"),
nextCards: [
CardExample(text: "This is the card"),
CardExample(text: "This is third card"),
],
onLeftSwipe: () => print("Card swiped!"),
onRightSwipe: () => print("Card swiped!"),
)
有关更多详细信息,请参阅示例。它包含有关如何使用 swipeable widget controller
的详细说明。
😐 问题与限制
如果您使用 swipeableWidgetController
自动滑动卡片(无需用户拖动),则只有当上一张卡片完全滑出时,才能开始滑动下一张卡片。要查看演示,请运行示例,并连续点击屏幕底部的“左”按钮。
除此之外,所有来自 v0.0.x 的其他问题似乎都已解决。
📝 其他信息
项目启动日期:2020年5月1日。
此包是从我的应用程序 Shots 中提取的。查看它!
示例代码
以下是完整的示例代码:
// 检查 https://github.com/ninest/swipeable_card/tree/master/example
// 以获取更好的解释
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'example_route.dart';
import 'example_slide_route.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
// 设置全屏应用
SystemChrome.setEnabledSystemUIOverlays([]);
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData.dark().copyWith(
// 让背景颜色更暗,突出卡片!
scaffoldBackgroundColor: Color(0xFF111111),
),
// home: ExampleRoute(),
home: ExampleRouteSlide(),
);
}
}
更多关于Flutter滑动卡片插件swipeable_card的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter滑动卡片插件swipeable_card的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
swipeable_card
是一个用于 Flutter 的插件,允许你创建可以滑动的卡片。这个插件非常适合用于实现类似 Tinder 的滑动卡片效果。以下是如何使用 swipeable_card
插件的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 swipeable_card
插件的依赖:
dependencies:
flutter:
sdk: flutter
swipeable_card: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 swipeable_card
插件:
import 'package:swipeable_card/swipeable_card.dart';
3. 使用 SwipeableCard
SwipeableCard
是一个可以滑动的卡片组件。你可以通过设置 onSwipeLeft
和 onSwipeRight
回调来处理滑动事件。
以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:swipeable_card/swipeable_card.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SwipeableCardExample(),
);
}
}
class SwipeableCardExample extends StatefulWidget {
@override
_SwipeableCardExampleState createState() => _SwipeableCardExampleState();
}
class _SwipeableCardExampleState extends State<SwipeableCardExample> {
final List<String> cards = [
'Card 1',
'Card 2',
'Card 3',
'Card 4',
];
int currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Swipeable Card Example'),
),
body: Center(
child: currentIndex < cards.length
? SwipeableCard(
child: Card(
child: Center(
child: Text(
cards[currentIndex],
style: TextStyle(fontSize: 24),
),
),
),
onSwipeLeft: () {
setState(() {
currentIndex++;
});
print('Swiped left');
},
onSwipeRight: () {
setState(() {
currentIndex++;
});
print('Swiped right');
},
)
: Text('No more cards!'),
),
);
}
}
4. 解释代码
SwipeableCard
是一个可以滑动的卡片组件。child
属性是卡片的内容,你可以在这里放置任何Widget
。onSwipeLeft
和onSwipeRight
是滑动事件的回调函数。当用户向左或向右滑动卡片时,这些函数会被调用。currentIndex
用于跟踪当前显示的卡片索引。当用户滑动卡片时,currentIndex
会增加,显示下一张卡片。
5. 自定义滑动行为
你可以通过设置 swipeThreshold
和 swipeVelocityThreshold
来自定义滑动的敏感度:
SwipeableCard(
child: Card(
child: Center(
child: Text(
cards[currentIndex],
style: TextStyle(fontSize: 24),
),
),
),
onSwipeLeft: () {
setState(() {
currentIndex++;
});
print('Swiped left');
},
onSwipeRight: () {
setState(() {
currentIndex++;
});
print('Swiped right');
},
swipeThreshold: 0.5, // 滑动阈值
swipeVelocityThreshold: 0.5, // 滑动速度阈值
),