要实现一个左右滑动选择喜欢/不喜欢的效果,可以使用Flutter的GestureDetector组件来监听手势操作,然后根据手势的方向来改变显示的内容。
首先,创建一个StatefulWidget,其中包含一个GestureDetector作为主要的手势监听器,并在其中定义两个Text组件,用来显示"喜欢"和"不喜欢":
import 'package:flutter/material.dart';
class LikeDislikeSelector extends StatefulWidget {
@override
_LikeDislikeSelectorState createState() => _LikeDislikeSelectorState();
}
class _LikeDislikeSelectorState extends State<LikeDislikeSelector> {
String selection = "Swipe left or right";
@override
Widget build(BuildContext context) {
return GestureDetector(
onHorizontalDragEnd: (DragEndDetails details) {
if (details.primaryVelocity.compareTo(0) == -1) {
setState(() {
selection = "Dislike";
});
} else if (details.primaryVelocity.compareTo(0) == 1) {
setState(() {
selection = "Like";
});
}
},
child: Center(
child: Text(
selection,
style: TextStyle(fontSize: 24),
),
),
);
}
}
在上述代码中,我们通过判断手势的水平速度是否为负来确定用户是左滑(不喜欢)还是右滑(喜欢),然后根据结果分别改变显示的内容,并通过调用setState()方法来更新界面。
接下来,在主页面中使用LikeDislikeSelector组件:
import 'package:flutter/material.dart';
import 'like_dislike_selector.dart';
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Swipe to like/dislike"),
),
body: Center(
child: LikeDislikeSelector(),
),
),
));
}
为了使界面更加直观,你还可以自定义GestureDetector的效果,例如添加滑动动画、背景颜色变化等。这里只是一个基本示例,你可以根据需求进行更多的自定义和优化。