请帮助我在一个图标按钮上长按检测。
我正在尝试得到一个图标按钮,它将更改数量值1,如果点击,并由10长按。不幸的是,在Flutter 2.12中,没有一个长按事件处理程序可用于IconButton。
因此,我只在Container中使用了Icon,如下所示
GestureDetector(
child: Container(
child: const Icon(
Icons.add,
),
padding: EdgeInsets.symmetric(vertical: 6.0, horizontal: 18.0),
),
onTap: () {
increment(1);
},
onLongPressStart: (_) async {
startPressing(() => increment(10));
},
onLongPressCancel: () {
cancelPress();
},
onLongPressEnd: (_) {
cancelPress();
},
),它是有效的,但问题是,新闻区域非常小,在手机上找到一个记者点是不舒服的。
我试着将图标大小增加到48,但结果很糟糕,图标太大了
const Icon(
Icons.add,
size: 48,
),对我来说,看起来不错的设计是将GestureDetector (用于长按)与IconButton (以及onPressed用于单击检测)一起使用:
GestureDetector(
child: IconButton(
onPressed: () => decrement(1),
icon: const Icon(
Icons.remove,
),
padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 18.0),
color: Theme.of(context).primaryColor,
),
onLongPressStart: (_) async {
startPressing(() => decrement(10));
},
onLongPressCancel: () {
cancelPress();
},
onLongPressEnd: (_) {
cancelPress();
},
),Flutter可以拥有用于longPress的GestureDetector和用于onPressed的IconButton吗?我可能在一些特定的Android版本上遇到这样的问题吗?
发布于 2021-10-18 20:49:42
试着用InkWell代替,它会像IconButton一样工作,给你带来连锁反应
Material(
child: InkWell(
onTap: () {},
onLongPress: () {},
child: Ink(
child: Icon(Icons.add),
),
),
),发布于 2021-10-18 21:50:32
将width和height设置为Container,并放入GestureDetector,并通过填充Icon来固定大小
Container(
alignment: Alignment.center,
width: 40,
height: 40,
child: GestureDetector(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 6.0, horizontal: 18.0),
child: Icon(
Icons.add,
),),
onTap: () {
increment(1);
},
onLongPressStart: (_) async {
startPressing(() => increment(10));
},
onLongPressCancel: () {
cancelPress();
},
onLongPressEnd: (_) {
cancelPress();
},
),
)https://stackoverflow.com/questions/69622366
复制相似问题