class VoteCalonUmumPage extends StatelessWidget {
Const VoteCalonUmumPage({Key?key,必需this.title}):超级(key: key);
最后的字符串标题;
小部件_buildListItem(BuildContext上下文,DocumentSnapshot文档){返回ListTile(tileColor: Color(0xff99c2ec),标题:Row(子:[Expanded(子:文本(文档['name'],样式:TextStyle(颜色:Colors.black87,fontsize: 20,)),
),
Container(
decoration: const BoxDecoration(
color: Color(0xffecc399),
),
padding: const EdgeInsets.all(10.0),
child: Text(
document['votes'].toString(),
style: Theme
.of(context)
.textTheme
.headline4,
),
),
],
),
onTap: () {
FirebaseFirestore.instance.runTransaction((transaction) async {
DocumentSnapshot freshSnap =
await transaction.get(document.reference);
await transaction.update(freshSnap.reference, {
'votes': freshSnap['votes'] + 1,
});
});
},
);
}
为了实际禁用onTap
处理程序,您必须将null
传递给onTap
。我将在这个类中创建一个变量来跟踪onTap
是否已经被按下,如果已经按下,则将null
传递到onTap
而不是您的回调函数。
onTap: onTapPressed ? null : () {
setState(() {
// call set state here so that the UI will be updated.
onTapPressed = true;
});
FirebaseFirestore.instance.runTransaction((transaction) async {
DocumentSnapshot freshSnap =
await transaction.get(document.reference);
await transaction.update(freshSnap.reference, {
'votes': freshSnap['votes'] + 1,
});
});
},
然后在小部件中添加此成员。
bool onTapPressed = false;
另外listile
还有一个名为enabled
的可选参数,您可以将该参数设置为false
,而不是将null
传递给onTap
。此方法将禁用列表互动程序
上的所有处理程序,而不仅仅是onTap
(例如,您可能还有一个onLongPress
处理程序)。它还将更新样式以使用当前主题中的
禁用的
颜色。
disabled: !onTapPressed,
onTap: () {
setState(() {
// call set state here so that the UI will be updated.
onTapPressed = true;
});
FirebaseFirestore.instance.runTransaction((transaction) async {
DocumentSnapshot freshSnap =
await transaction.get(document.reference);
await transaction.update(freshSnap.reference, {
'votes': freshSnap['votes'] + 1,
});
});
},
签出下面的代码一个简单的逻辑它可能会帮助你,
bool isLoading = false; //global variable
onTap: () {
if(!isLoading)
{
isLoading = true;
try{
FirebaseFirestore.instance.runTransaction((transaction) async {
DocumentSnapshot freshSnap = await transaction.get(document.reference);
await transaction.update(freshSnap.reference, {'votes': freshSnap['votes'] + 1,});
isLoading = false;
});
}catch((e){
isLoading = false
});
}
},
你可以提出这样的条件:-
设置一个bool变量并将其设置为true,当用户点击按钮时,如果要永久禁用使用优先级,则将其设置为false
bool=true;
GestureDetector(
onTap: (){
if(isClicked){
isClicked = true;
enter code here
}
}
child: Container(),
)
编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,
问题内容: 我在网上浏览了很多,其中包括几个堆栈溢出示例,以解决该问题。具体来说,我尝试了以下方法: 两者都不如广告中所述。还有其他建议吗?请仅提供角度建议。谢谢。 问题答案: 您非常接近答案。您唯一错过的是使用调用按钮上的函数。 另一个问题是,控制器中的功能应该是,而不是 工作示例: index.html应该类似于: 您的控制器application.js就像:
问题内容: jQuery click函数在这里工作正常 但是如果我通过ajax 设置一些功能,将无法正常工作。 例如 现在,最后一个不起作用。 jsfiddle示例:http : //jsfiddle.net/suhailvs/wjqjq/ 注意:CSS在这里工作正常。 我想使这些新添加的与jQuery click一起工作。 问题答案: 问题是.click仅适用于页面上已经存在的元素。如果要连接将
好的,伙计们。我正在尝试创建一个小费计算器,我遇到了一些问题。问题是当用户输入一个值时,程序会询问(禁用enter按钮)用户是否希望包含提示,因此用户选择是或否。如果选择了其中任何一个,前面的问题就消失了,文字出现“小费包括在内”或“小费不包括在内”。现在,如果用户想要编辑上面的值,按钮将再次被启用,但是如果它点击了一个,它将再次询问用户是否想要包含提示。所以我的问题是,我怎样才能使它使它,无论那
问题内容: 提交表单时,我正在使用jquery $ .post。我想在单击按钮后禁用按钮约5秒钟,以避免多次提交表单。 这是我现在所做的: 我之前使用了fadeIn和fadeOut,但是当我快速测试单击按钮时仍然无法正常工作。我应该怎么做才能实现自己想实现的目标? 问题答案: 您可以这样操作: 或者您可以使用ajax收到响应后正在执行的jQuery 方法: 编辑: 这是一个 3秒钟服务器端响应延迟
本文向大家介绍如何禁止浏览器使用后退按钮功能,包括了如何禁止浏览器使用后退按钮功能的使用技巧和注意事项,需要的朋友参考一下 本文介绍可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适用场合。 一、概述 曾经有许多人问起,“怎样才能‘禁用'浏览器的后退按钮?”,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在ASP论坛上,这个问题也是问得最多的问题之一。遗憾的是,答案非常