避免在按下按钮时对setState进行小部件锁定?
创始人
2024-12-17 00:30:22
0

要避免在按下按钮时对setState进行小部件锁定,可以使用一个布尔变量来控制按钮是否可点击,并在setState期间将其设置为false。

以下是一个示例代码:

import 'package:flutter/material.dart';

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State {
  bool _isButtonEnabled = true;

  void _handleButtonPress() {
    if (!_isButtonEnabled) {
      return;
    }

    setState(() {
      _isButtonEnabled = false;
    });

    // 模拟耗时操作
    Future.delayed(Duration(seconds: 2), () {
      setState(() {
        _isButtonEnabled = true;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Button Example'),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: _isButtonEnabled ? _handleButtonPress : null,
          child: Text('Press Me'),
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: MyWidget(),
  ));
}

在上面的示例中,我们使用_isButtonEnabled布尔变量来控制按钮是否可点击。当按钮被按下时,我们首先检查_isButtonEnabled的值。如果它为false,则返回,不执行任何操作。如果它为true,我们将其设置为false,并在setState期间更新小部件状态。

在这个例子中,我们使用Future.delayed来模拟一个耗时的操作。在耗时操作完成后,我们再次调用setState将_isButtonEnabled设置为true,使按钮再次可点击。

相关内容

热门资讯

黑科技辅助!wEpoKe软件透... 黑科技辅助!wEpoKe软件透明挂,哈糖大菠萝切牌规律-好像真的有挂(攻略方法)1、这是跨平台的哈糖...
黑科技辅助!德州wepower... 黑科技辅助!德州wepower软件透明挂,德扑之星可以查数据-一般真的有挂(扑克教程);无聊就玩这款...
wepoke辅助!wePokE... wepoke辅助!wePokE软件透明挂,wepoke系统-一直真的有挂(普及教程)1、不需要AI权...
透明辅助挂!WepokE软件透... 透明辅助挂!WepokE软件透明挂,wpk微扑克辅助是真的-果真真的有挂(必胜教程)1、不需要AI权...
德州辅助!we-poker软件... 德州辅助!we-poker软件透明挂,微扑克有稳赢的打法-的确真的有挂(详细教程);人气非常高,ai...
软件辅助挂!wePoKe软件透... 软件辅助挂!wePoKe软件透明挂,GG扑克辅助软件-的确真的有挂(总结教程)您好,GG扑克,确实是...
软件辅助挂!WepokE软件透... 软件辅助挂!WepokE软件透明挂,红龙扑克模拟器-好像真的有挂(玩家教程)是一款可以让一直输的玩家...
透明辅助!wepokE软件透明... 透明辅助!wepokE软件透明挂,wepoke有插件-一直真的有挂(必胜教程);是一款可以让一直输的...
黑科技辅助挂!WepoKe软件... 黑科技辅助挂!WepoKe软件透明挂,微扑克真的有外挂嘛-一直真的有挂(解密教程)1、超多福利:超高...
脚本辅助挂!wepoker软件... 脚本辅助挂!wepoker软件透明挂,微扑克全自动机器人-果然真的有挂(玩家教你)1、微扑克ai机器...