android - 如何在 TextFormField 中显示/隐藏密码?

标签 android dart flutter

目前我的密码 TextFormField 如下所示:

TextFormField(
  decoration: const InputDecoration(
      labelText: 'Password',
      icon: const Padding(
        padding: const EdgeInsets.only(top: 15.0),
        child: const Icon(Icons.lock),
      )),
  validator: (val) => val.length < 6 ? 'Password too short.' : null,
  onSaved: (val) => _password = val,
  obscureText: true,
);

我想要一个类似交互的按钮,它可以使密码可见和不可见。我可以在 TextFormField 内进行吗?或者我将不得不制作一个 Stack 小部件来获得我所需的 UI。以及关于 obscureText 真/假的条件将如何设置?

最佳答案

我按照@Hemanth Raj 创建了一个解决方案,但采用了更强大的方式。

首先声明一个bool变量_passwordVisible

initState()

中初始化_passwordVisiblefalse
@override
  void initState() {
    _passwordVisible = false;
  }

以下是 TextFormField 小部件:

TextFormField(
   keyboardType: TextInputType.text,
   controller: _userPasswordController,
   obscureText: !_passwordVisible,//This will obscure text dynamically
   decoration: InputDecoration(
       labelText: 'Password',
       hintText: 'Enter your password',
       // Here is key idea
       suffixIcon: IconButton(
            icon: Icon(
              // Based on passwordVisible state choose the icon
               _passwordVisible
               ? Icons.visibility
               : Icons.visibility_off,
               color: Theme.of(context).primaryColorDark,
               ),
            onPressed: () {
               // Update the state i.e. toogle the state of passwordVisible variable
               setState(() {
                   _passwordVisible = !_passwordVisible;
               });
             },
            ),
          ),
        );

关于android - 如何在 TextFormField 中显示/隐藏密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49125064/

相关文章:

android - 如何在 Android 上的 ArrayList 中的每个元素的末尾添加一个逗号

dart - 限制选中复选框的数量

dart - 如何在Phpstorm中将Dart转换为javascript

flutter - 有没有办法在应用程序被杀死或移动到后台之前调用特定代码?

Android 保存日志或错误跟踪

java - 如何在 Android 中的 ListView 中 ScrollView

android - Android 中的本地化值(value)

dart - 如何在另一个不相似的列表中添加元素?

android - Flutter 应用程序无法在 iOS 平台上运行

dart - 替换 Dart 中的双反斜杠