在我的应用中长按FloatingActionButton
时,我需要执行第二项操作。
floatingActionButton: FloatingActionButton(
onPressed: someFunction,
child: Icon(Icons.add),
onLongPressed: //Something like this or any other solution
),
答案 0 :(得分:2)
您可以创建自己的LongPressFloatingActionButton,因为StatefullWidget已经具有此选项。
参见: Flutter - I want to select the card by onLongPress?
Api: https://api.flutter.dev/flutter/flutter_test/WidgetController/longPress.html
在包裹了FloatingActionButton的新CustomStatefullWidget的状态内,您可以像使用它一样
class CustomWidget extends StatefulWidget {
final int index;
final bool longPressEnabled;
final VoidCallback callback;
const CustomWidget({Key key, this.index, this.longPressEnabled, this.callback}) : super(key: key);
@override
_CustomWidgetState createState() => new _CustomWidgetState();
}
class _CustomWidgetState extends State<CustomWidget> {
bool selected = false;
@override
Widget build(BuildContext context) {
return new GestureDetector(
onLongPress: () {
setState(() {
selected = !selected;
});
widget.callback();
},
答案 1 :(得分:1)
确实存在可以与GestureDetector一起使用的onLongPress手势。 FloatingActionButton没有类似的直接解决方案。它不是很好,但是如果您真的想使用FloatingActionButton而不是简单地使用GestureDetector,则可以像这样轻松地将FAB嵌套在GestureDetector中,以达到相同的结果:
GestureDetector(
onLongPress: () {
print("Long press made");
},
child: FloatingActionButton(
child: Text("FAB"),
onPressed: () {},
),
)
您可以在Flutter的官方文档here
中阅读有关onLongPress的更多信息。答案 2 :(得分:1)
我建议使用InkWell
,以便也可以产生涟漪效应。
这里是您如何使用它的方法。
floatingActionButton: InkWell(
splashColor: Colors.blue,
onLongPress: () {
// handle your long press functionality here
},
child: FloatingActionButton(
child: Icon(Icons.add),
onPressed: someFunction,
),
)
答案 3 :(得分:0)
基于上面的解决方案,我创建了自己的解决方案,它似乎也具有所需的波纹效果。谢谢大家。
floatingActionButton: FloatingActionButton(
onPressed: normalPressAction,
child: GestureDetector(
child: Icon(Icons.add),
onLongPress: longPressAction,
),
),