Flutter TextField,如何对文本字段内部和上方的标签使用不同的样式

时间:2019-04-27 16:53:13

标签: flutter flutter-layout

我有以下TextField

TextField(
    decoration: InputDecoration(
        labelStyle: TextStyle(
            color: I_WANT_TO_CHANGE_THIS,
        ),
        labelText: widget.label,
    ),
);

如何更改颜色,以便使其在文本字段(提示)内时为灰色,而在文本字段上方(处于聚焦状态)浮动时为黑色。

1 个答案:

答案 0 :(得分:0)

尝试使用FocusNode

class _MyHomePageState extends State<MyHomePage> {

  FocusNode _focusNode = FocusNode();
  Color color;

  @override
  Widget build(BuildContext context) {

    _focusNode.addListener(() {
      setState(() {
       color = _focusNode.hasFocus ? Colors.blue : Colors.red; 
      });
    });

    return Scaffold(
      body: Center(
        child: TextField(
          focusNode: _focusNode,
          decoration: InputDecoration(
            labelText: 'Label',
            labelStyle: TextStyle(
              color: _focusNode.hasFocus ? Colors.blue : Colors.red,
            )
          ),
          autofocus: false,
        ),
      )
    );
  }
}

请注意,在此特定示例中,由于只有一个文本字段,因此一旦选中该文本字段将始终处于焦点。