gpt4 book ai didi

flutter - Flutter-文本字段中的初始值和用户输入使用不同的颜色

转载 作者:行者123 更新时间:2023-12-03 04:19:42 24 4
gpt4 key购买 nike

基本上,我想做的是为文本字段提供一个初始值(灰色),一旦用户单击该文本字段,该初始值就会自动清除,并且用户输入应为黑色。目前,我的代码是这样的。

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)我希望只有初始值是灰色的,但是一旦用户执行某项操作否则,他的输入也会变成灰色。
有人可以帮我吗?谢谢。

最佳答案

根据我对问题的了解,您可以执行以下操作的一种方法是

  FocusNode _focusNode;

@override
void initState() {
super.initState();
_focusNode = FocusNode()..addListener(_onFocus);
}

void _onFocus() {
setState((){});
}

Widget _buildSearchBox() {
return CupertinoTextField(
placeholder: "Search",
focusNode: _focusNode,
style: TextStyle(
fontSize: 17,
color: _focusNode.hasFocus
? CupertinoColors.black
: CupertinoColors.systemGrey,
),
decoration: BoxDecoration(
color: CupertinoColors.systemGrey6,
),
);
}

@override
void dispose() {
_focusNode.dispose();
super.dispose();
}

关于flutter - Flutter-文本字段中的初始值和用户输入使用不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63406314/

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