You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter实现点击眼睛图标切换密码显示与隐藏功能需求

实现Flutter密码输入框的显示/隐藏切换功能

要实现点击眼睛图标切换密码显示状态,你需要通过状态变量控制obscureText的值,同时给后缀图标添加点击交互,具体实现步骤如下:

  1. 将输入框所在组件改为StatefulWidget(需要状态更新来触发UI变化)
  2. 定义布尔变量控制密码是否隐藏
  3. 给后缀图标绑定点击事件,切换状态并刷新UI
  4. 根据当前状态切换显示的图标(正常眼睛/带斜杠的眼睛)

完整代码示例:

class PasswordInput extends StatefulWidget {
  const PasswordInput({super.key});

  @override
  State<PasswordInput> createState() => _PasswordInputState();
}

class _PasswordInputState extends State<PasswordInput> {
  // 控制密码隐藏状态的变量
  bool _isPasswordHidden = true;

  @override
  Widget build(BuildContext context) {
    return TextFormField(
      keyboardType: TextInputType.visiblePassword,
      // 用状态变量控制密码是否隐藏
      obscureText: _isPasswordHidden,
      decoration: InputDecoration(
        labelText: "Entrez votre mot de passe",
        border: const OutlineInputBorder(),
        prefixIcon: const Icon(Icons.lock),
        // 用GestureDetector给图标添加点击交互
        suffixIcon: GestureDetector(
          onTap: () {
            // 切换状态并更新UI
            setState(() {
              _isPasswordHidden = !_isPasswordHidden;
            });
          },
          // 根据当前状态切换显示的图标
          child: Icon(
            _isPasswordHidden ? Icons.remove_red_eye : Icons.visibility_off,
          ),
        ),
      ),
    );
  }
}

关键细节说明:

  • 必须调用setState才能让状态变化同步到界面上
  • 切换图标可以让用户直观感知当前密码的显示状态
  • GestureDetector是给非交互组件(如Icon)添加点击事件的常用方式

内容的提问来源于stack exchange,提问作者SJ093

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:08:15