首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IconButton和长按检测

IconButton和长按检测
EN

Stack Overflow用户
提问于 2021-10-18 20:43:00
回答 2查看 684关注 0票数 1

请帮助我在一个图标按钮上长按检测。

我正在尝试得到一个图标按钮,它将更改数量值1,如果点击,并由10长按。不幸的是,在Flutter 2.12中,没有一个长按事件处理程序可用于IconButton

因此,我只在Container中使用了Icon,如下所示

代码语言:javascript
复制
        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,但结果很糟糕,图标太大了

代码语言:javascript
复制
const Icon(
              Icons.add,
              size: 48,
            ),

对我来说,看起来不错的设计是将GestureDetector (用于长按)与IconButton (以及onPressed用于单击检测)一起使用:

代码语言:javascript
复制
        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版本上遇到这样的问题吗?

EN

回答 2

Stack Overflow用户

发布于 2021-10-18 20:49:42

试着用InkWell代替,它会像IconButton一样工作,给你带来连锁反应

代码语言:javascript
复制
Material(
  child: InkWell(
    onTap: () {},
    onLongPress: () {},
    child: Ink(
      child: Icon(Icons.add),
    ),
  ),
),
票数 1
EN

Stack Overflow用户

发布于 2021-10-18 21:50:32

widthheight设置为Container,并放入GestureDetector,并通过填充Icon来固定大小

代码语言:javascript
复制
     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();
      },
    ),
   )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69622366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档