dart - 如何防止对 Flutter Inkwell 进行多次触摸

标签 dart flutter touch hybrid-mobile-app

我是 flutter 的新手,我有一个计数器按钮,我想防止它被多次触摸。

Tap 函数在 Inkwell 组件下定义 (onTap: () => counterBloc.doCount(context))。

如果我运行这个应用程序并进行多点触控,计数器会快速上升,但我不希望它发生。有什么想法吗?

下面是我的代码:

  Expanded(
  child: Container(
    padding: EdgeInsets.only(right: 16),
    alignment: Alignment.centerRight,
    child: InkWell(
      onTap: () => counterBloc.doCount(context),
      child: Stack(
        alignment: Alignment.center,
        children: <Widget>[
          Image.asset("assets/images/home/tap.png", scale: 11,),
          StreamBuilder(
            initialData: 0,
            stream: counterBloc.counterStream,
            builder: (BuildContext ctx, AsyncSnapshot<int> snapshot){
              return Text("${snapshot.data}",style: TextStyle(color: Colors.white, fontSize: 120),);
            },
          ),
        ],
      )
    )
  )
)

最佳答案

你可以使用一个AbsorbPointer

AbsorbPointer(
  absorbing: !enabled,
  child: InkWell(
    onTap: (){
      print('buttonClicked');
      setState(() {
        enabled = false;
      });
    },
    child: Container(
      width: 50.0,
      height: 50.0,
      color: Colors.red,
    ),
  ),
),

当你想再次启用按钮时,将 enabled 设置为 true,不要忘记用 setState 包裹它

关于dart - 如何防止对 Flutter Inkwell 进行多次触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55235335/

相关文章:

flutter - Flutter Dart:错误_ImmutableMap <动态,动态>' is not a subtype of type ' Map <String,动态>

javascript - Dart : capture an image of a Flutter webview

dart - AngularDart的角度组件的应用布局

flutter - List.add 和手动将项目添加到 Riverpod StateNotifier<List<String>> 之间的区别

animation - 在 Flutter 动画中更新动画值的正确方法是什么?

ios - Flutter.h 未找到错误

dart - Flutter - BLoC 模式 - 如何使用流调用另一个小部件的方法,即动画?

html - 指定 -ms-viewport 时 Div 溢出滚动?

Android - 如何让图标在触摸时发光?

javascript - 'touchstart' 事件是否有与点击事件对应的 e.PageX 位置?