aki*_*han 1 dart flutter flutter-layout
我尝试创建一个带有清除按钮的文本字段,但是当我输入某些值时,没有按我想要的方式显示清除按钮。似乎它无法检测到_firstNameController.text. 我该如何解决这个问题?
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
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
而不是suffixIcon,你suffix。这样,如果未聚焦,该clear按钮将不可见,并且当您点击该字段时,该按钮将显示 。此外,当您在输入内容后点击该图标时,它会清除该字段。下面的工作示例代码:textformfieldiconclear
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)
)
),
),
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
5090 次 |
| 最近记录: |