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

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/

10-09 01:27