首页 > 解决方案 > 处理颤振时禁用按钮

问题描述

如何在处理过程中禁用 aa 按钮?我做了一个like按钮,但是在db上注册like需要一些延迟。如何在处理完成时防止按下按钮。??

onPressed: () {
                  setState(() {
                    _color = Colors.green;
                    _icon = Icon(Icons.favorite);
                    final like = LikeData(
                      campaingID: donation.campaignID,
                      dateTime: Timestamp.now(),
                      userName: FirebaseAuth.instance.currentUser.displayName,
                      userId: user.uid,
                    );
                    likeService.newLike(donation, like);

如何防止双击此按钮事件?

标签: flutterflutter-layout

解决方案


试试这个

bool isProcessing = false; // in your class before build method

onPressed: !isProcessing ? () {
          setState(() {
            isProcessing = true;
            _color = Colors.green;
            _icon = Icon(Icons.favorite);
            final like = LikeData(
              campaingID: donation.campaignID,
              dateTime: Timestamp.now(),
              userName: FirebaseAuth.instance.currentUser.displayName,
              userId: user.uid,
            );
            likeService.newLike(donation, like).then((val) {
              setState() {
                isProcessing = false;
              }
            });
          });
        } : null,

推荐阅读