build method

  1. @override
Widget build(
  1. BuildContext context
)
override

Implementation

@override
Widget build(BuildContext context) {
  return AnimatedContainer(
    duration: const Duration(milliseconds: 300),
    width: expanded ? widget.maxSize : 40,
    decoration: BoxDecoration(
      borderRadius: BorderRadius.circular(8),
      color: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.1),
    ),
    child: Row(
      mainAxisAlignment: MainAxisAlignment.end,
      children: <Widget>[
        Visibility(
          visible: expanded,
          child: Expanded(
            child: Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8),
              child: TextField(
                controller: widget.controller,
                decoration: const InputDecoration(
                  border: InputBorder.none,
                ),
                autofocus: expanded,
              ),
            ),
          ),
        ),
        GestureDetector(
          onTap: () => setState(() {
            expanded = !expanded;
            if (!expanded) {
              widget.controller.clear();
            }
          }),
          child: Padding(
            padding: const EdgeInsets.fromLTRB(0, 12, 8, 12),
            child: Icon(
              FontAwesomeIcons.magnifyingGlass,
              color: Theme.of(context)
                  .colorScheme
                  .onSurface
                  .withValues(alpha: 0.6),
            ),
          ),
        ),
      ],
    ),
  );
}