gpt4 book ai didi

flutter - 只关注 TextField 中的 IconButton

转载 作者:IT王子 更新时间:2023-10-29 07:02:03 24 4
gpt4 key购买 nike

我有一个用于输入密码的 TextFormField,它带有一个用于切换 obscureTextIconButton。我想让它在单击按钮时,文本字段不会成为焦点。然而,事实并非如此。我想这与 FocusNode 有关。

ValueListenableBuilder<bool>(
valueListenable: _obscureText,
builder: (context, obscureText, child) => TextFormField(
obscureText: obscureText,
decoration: InputDecoration(
suffixIcon: IconButton(
icon: Icon(obscureText ? Icons.visibility_off : Icons.visibility),
onPressed: () => _obscureText.value = !obscureText,
),
),
),
),

有人知道解决办法吗?

最佳答案

你只需要

FocusNode.unfocus()

onPressed() 方法中的 setState 之后调用它。

输出:

enter image description here

完整解决方案:

bool obscureText = false;
FocusNode _focusNode = FocusNode();

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
children: <Widget>[
TextFormField(
focusNode: _focusNode,
obscureText: obscureText,
decoration: InputDecoration(
suffixIcon: IconButton(
icon: Icon(obscureText ? Icons.visibility_off : Icons.visibility),
onPressed: () {
setState(() => obscureText = !obscureText);
Timer.run(() => _focusNode.unfocus());
},
),
),
),
TextField(),
],
),
),
);
}

关于flutter - 只关注 TextField 中的 IconButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com