美文网首页
Flutter 限制按钮点击的时间间隔

Flutter 限制按钮点击的时间间隔

作者: yytester | 来源:发表于2021-01-17 15:34 被阅读0次

    有时候需要防止用户误点击按钮,特别是用flutter web做前端, 和后端交互的时候.

    通过对点击按钮事件的时间间隔做控制,来实现对按钮点击的控制.

    方法定义

      var  lastPopTime = DateTime.now();
    
      void intervalClick(int needTime){
              // 防重复提交
              if(lastPopTime == null || DateTime.now().difference(lastPopTime) > Duration(seconds: needTime)){
                print(lastPopTime);
                lastPopTime = DateTime.now();
                print("允许点击");
              }else{
                // lastPopTime = DateTime.now(); //如果不注释这行,则强制用户一定要间隔2s后才能成功点击. 而不是以上一次点击成功的时间开始计算.
                print("请勿重复点击!");
              }
            }
    
    

    调用

     floatingActionButton: FloatingActionButton(
            onPressed:(){
              intervalClick(2);
            },
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ), 
    

    完整demo代码

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      
      int _counter = 0;
    
      var  lastPopTime = DateTime.now();
    
      void intervalClick(int needTime){
              // 防重复提交
              if(lastPopTime == null || DateTime.now().difference(lastPopTime) > Duration(seconds: needTime)){
                print(lastPopTime);
                lastPopTime = DateTime.now();
                print("允许点击");
              }else{
                // lastPopTime = DateTime.now(); //如果不注释这行,则强制用户一定要间隔2s后才能成功点击. 而不是以上一次点击成功的时间开始计算.
                print("请勿重复点击!");
              }
            }
    
      @override
      Widget build(BuildContext context) {
        
        return Scaffold(
          appBar: AppBar(
            
            title: Text(widget.title),
          ),
          body: Center(
            
            child: Column(
             
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                
                Text(
                  'You have pushed the button this many times:',
                ),
                Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.headline4,
                ),
              
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed:(){
              intervalClick(2);
            },
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ), 
        );
      }
    }
    

    Flutter 写的app, 需要源码可以私信~~

    最好的笔记软件


    最好的笔记软件

    https://www.wolai.com/signup?invitation=6Z8Z3BP

    相关文章

      网友评论

          本文标题:Flutter 限制按钮点击的时间间隔

          本文链接:https://www.haomeiwen.com/subject/ulnaaktx.html