flutter - 在 Flutter 的垂直轮播中刷卡
问题描述
我正在尝试创建一个社交媒体供稿,其中每个帖子都是一张不同大小的卡片,一个在另一个之上(几乎就像一个垂直旋转木马)。对于每张卡片,用户可以向右滑动喜欢,向左滑动不喜欢,向上跳过。当用户向左或向右滑动时,底部的卡片必须出现在屏幕中央,占据其位置(将其视为 Tinder 和 Tiktok 的混合体)。
我仍在学习 Flutter,不知道使用什么小部件来实现这一点。关于如何完成这项工作的任何想法?
解决方案
Dismissible 小部件应该是您需要的
void main() {
runApp(Screen());
}
class Screen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Screen1(),
),
);
}
}
编辑 :
class Screen1 extends StatefulWidget {
@override
_Screen1State createState() => _Screen1State();
}
class _Screen1State extends State<Screen1> {
final List<Color> colors = [Colors.red, Colors.blue, Colors.yellow, Colors.green];
@override
Widget build(BuildContext context) {
return PageView.builder(
controller: PageController(viewportFraction: 0.8),
scrollDirection: Axis.vertical,
itemCount: colors.length,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(20),
child: AnimatedSwitcher(
transitionBuilder: (child, animation) {
return SlideTransition(
child: child,
position:
Tween<Offset>(begin: Offset(0, 1), end: Offset(0, 0)).animate(animation));
},
duration: Duration(milliseconds: 200),
child: Dismissible(
movementDuration: Duration(milliseconds: 1),
resizeDuration: Duration(milliseconds: 1),
onDismissed: (direction) {
setState(() {
colors.remove(colors[index]);
});
},
key: ValueKey(colors[index]),
child: Container(
width: (200+index*75).toDouble(),
color: colors[index],
),
),
),
);
});
}
}
推荐阅读
- javascript - ReactJS / Material-UI / Javascript:无法在 TableRow 上获得圆角边框
- python - 使用 Beautiful Soup 提取特定列表
- reactjs - 如何通过在react js中单击来删除特定元素
- python - python - 如何使用openpyxl库使用python将列从一个excel表复制到另一个?
- android - 从 ADB 发送意图到运行时注册的 BroadcastReceiver
- .net - 按钮在 .NET Web 窗体上启用后不执行任何操作
- arrays - Julia 条件赋值基于 | (或)在多维数组中
- python-3.x - 无法在 Windows 10 中使用 pycharms 通过 pip install uwsgi 安装 uwsgi
- scala - Spark scala在具有不同名称的列上连接两个数据框
- algorithm - 精确比较非常大整数(10 亿级)的两个指数的算法