Flutter 如何防止多次点击手势?
我有一个需要启动url的手势检测器。但是如果这个手势被多次点击,那么启动就会被多次调用 在当前代码中,我试图使用状态按钮来控制点击。但是,在发射开始之前,什么时候完成Flutter 如何防止多次点击手势?,flutter,dart,Flutter,Dart,我有一个需要启动url的手势检测器。但是如果这个手势被多次点击,那么启动就会被多次调用 在当前代码中,我试图使用状态按钮来控制点击。但是,在发射开始之前,什么时候完成 _isButtonTapped = false Widget _buildButton(String key, Text title, String url) { _onTapped() async { if (await canLaunch(url)) { launch(url)
_isButtonTapped = false
Widget _buildButton(String key, Text title, String url) {
_onTapped() async {
if (await canLaunch(url)) {
launch(url).whenComplete(
() => setState(() {
_isButtonTapped = false;
}),
);
}
}
return GestureDetector(
onTap: () {
_isButtonTapped ? null : _onTapped();
setState(() {
_isButtonTapped = true;
});
},
child: Container(
child: Padding(
padding: EdgeInsets.all(6.0),
child: Center(child: title),
),
),
);
}
试试这个:
class _HomePageState extends State<HomePage> {
bool _isButtonTapped = false;
String _url = "https://google.ca";
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
color: Colors.blue,
width: 100,
height: 100,
child: GestureDetector(
onTap: () async {
if (!_isButtonTapped) { // only allow click if it is false
_isButtonTapped = true; // make it true when clicked
if (await canLaunch(_url)) {
await launch(_url);
_isButtonTapped = false; // once url is launched successfully, we again make it false, allowing tapping again
}
}
},
),
),
),
);
}
}
class\u HomePageState扩展状态{
bool _isButtonTapped=假;
字符串url=”https://google.ca";
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
子:容器(
颜色:颜色,蓝色,
宽度:100,
身高:100,
儿童:手势检测器(
onTap:()异步{
如果(!\u isButtonTapped){//仅允许在为false时单击
_isButtonTapped=true;//单击时将其设置为true
如果(等待canLaunch(_url)){
等待启动(_url);
_isButtonTapped=false;//一旦url成功启动,我们再次将其设为false,允许再次点击
}
}
},
),
),
),
);
}
}
添加onDoubleTap:()=>null
可防止双重点击,并使执行多重点击更加困难。但这并不能完全阻止它。谢谢你的回答,但这并不能改变任何事情。。。如果“\u isButtonTapped=false;”,则它确实有效在最后一行中,已删除。但是,该按钮只能永久单击一次。它就像启动(_url)没有等待,并且在操作完成之前将_isButtonTapped设置为false。。。我会尽力调查:)