【发布时间】:2020-12-03 23:03:29
【问题描述】:
基本上我要做的是为文本字段提供初始值(灰色),一旦用户单击文本字段,初始值就会自动清除,用户输入应该是黑色的。目前我的代码是这样的。
TextEditingController _controller;
FocusNode _focusNode;
@override
void initState() {
super.initState();
_controller = TextEditingController(text: 'Search');
_focusNode = FocusNode()..addListener(_onFocus);
}
@override
void dispose() {
_focusNode.dispose();
_controller.dispose();
super.dispose();
}
void _onFocus() {
if (_focusNode.hasFocus) _controller.clear();
}
Widget _buildSearchBox() {
return CupertinoTextField(
controller: _controller,
focusNode: _focusNode,
style: TextStyle(
fontSize: 17,
color: _focusNode.hasFocus
? CupertinoColors.black
: CupertinoColors.systemGrey,
),
decoration: BoxDecoration(
color: CupertinoColors.systemGrey6,
),
);
}
我知道它不起作用,因为:(a) 每次用户键入内容、执行其他操作并再次单击文本字段时,他的输入都会被清除 (b) 我希望只有初始值是灰色的,但是一旦用户做了其他事情,他的输入也变成灰色。
谁能帮帮我?谢谢。
【问题讨论】:
-
你不能为此使用一个提示吗?您可以设置与输入文本不同的样式,这基本上就是您想要的。