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

目前我的密码 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;
               });
             },
            ),
          ),
        );

https://stackoverflow.com/questions/49125064/

相关文章:

flutter - 如何更改 FloatingActionButton 的大小?

http - 如何将查询参数添加到 Dart http 请求中?

dart - Flutter ListView 项目点击监听器

dart - Flutter:如何制作随机颜色生成器背景

android - Flutter 上的小部件的 onResume() 和 onPause()

flutter - 如何在 AppBar 中用图像替换标题

android - Flutter/Dart 静态变量丢失/不断重新初始化

dart - 如何在 Flutter 中播放自定义声音?

flutter - 在 Flutter 中选择时更改 ListTile 的背景颜色

dart - 如何使用 image.file 加载图像