在Flutter

时间:2018-06-10 17:15:16

标签: dart material-design flutter textfield google-inbox

我希望fillColor在焦点状态下为TextField,在正常状态下为另一个TextField。如何实现这种行为?

同样,是否可以根据x = int(input()) y = int(input()) z = int(input()) n = int(input()) outputList=[] for i in range( x + 1): for j in range( y + 1): for k in range( z + 1): if ( ( i + j + k) != n ): tempList=[i,j,k] outputList.append(tempList) print(outputList) 的状态定制其他样式?

编辑:

我的目标是进行颜色转换,这对于移动设备而言是一种推动。

Searchbar transition

1 个答案:

答案 0 :(得分:4)

您可以将自己的FocusNode对象传递到文本字段的focusNode属性。 FocusNode具有addListener方法,您可以在其中调用setState,从而重新呈现您的小部件。

class _ChangingColorsExampleState extends State<ChangingColorsPage> {
  FocusNode _focusNode;

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

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

  _onOnFocusNodeEvent() {
    setState(() {
      // Re-renders
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        backgroundColor: _getAppBarBackgroundColor(),
        title: new Text('Changing Colors'),
      ),
      body: new Container(
        color: _getContainerBackgroundColor(),
        padding: new EdgeInsets.all(40.0),
        child: new TextField(
          style: new TextStyle(color: _getInputTextColor()),
          focusNode: _focusNode,
        )
      ),
    );
  }

  Color _getContainerBackgroundColor() {
    return _focusNode.hasFocus ? Colors.blueGrey : Colors.white;
  }

  Color _getAppBarBackgroundColor() {
    return _focusNode.hasFocus ? Colors.green : Colors.red;
  }

  Color _getInputTextColor() {
    return _focusNode.hasFocus ? Colors.white : Colors.pink;
  }
}