gpt4 book ai didi

flutter - 如何使用TextEditingController使用“清除”按钮创建TextField?

转载 作者:行者123 更新时间:2023-12-03 04:50:18 25 4
gpt4 key购买 nike

我试图用清除按钮创建一个TextField,但是当我输入一些值时,没有显示清除按钮。似乎无法检测到_firstNameController.text的更改。我该如何解决这个问题?

enter image description here

class TextFieldWithClearBtn extends StatefulWidget {
@override
_TextFieldWithClearBtnState createState() => _TextFieldWithClearBtnState();
}

class _TextFieldWithClearBtnState extends State<TextFieldWithClearBtn> {
final TextEditingController _firstNameController = TextEditingController();

@override
void dispose {
super.dispose();
_firstNameController.dispose();
}
@override
Widget build(BuildContext context) {
return Container(
child: TextFormField(
controller: _firstNameController,
decoration: InputDecoration(
labelText: "First name",
suffixIcon: _firstNameController.text.isNotEmpty
? GestureDetector(
onTap: () {
WidgetsBinding.instance.addPostFrameCallback((_) => _firstNameController.clear());
},
child: Icon(Icons.clear, color: Colors.black38),
)
: null
),
),
);
}
}

最佳答案

您可以使用suffixIcon代替suffix。这样,如果clear不在焦点上,则textformfield按钮将不可见,并且在您点击该字段时将显示icon。同样,当您在键入内容后点击clear图标时,它将清除该字段。下面的工作示例代码:

TextFormField(
controller: _firstNameController,
textAlign: TextAlign.left,
cursorColor: Colors.white,
onChanged: (value) {

},
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
labelText: 'First Name',
suffix: GestureDetector(
onTap: () {
_firstNameController.clear();
},
child: Icon(Icons.clear)
)
),
),

希望这可以帮助。

关于flutter - 如何使用TextEditingController使用“清除”按钮创建TextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61526663/

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