Home How to display TextField border in Flutter?
Post
Cancel

How to display TextField border in Flutter?

Text fields are the bread and butter of front-end development. Yet I always have to check its API to find methods that I’m looking for. In this article, I’ll cover one part of it - borders. This is probably the first element that creative product designers will change, and you must implement it.

How to display Material TextField

By design, when TextField is used, it follows Material Design specification Text fields – Material Design 3. Below, you can see how it looks with the useMaterial3 switch on. Flutter TextField with default useMaterial3 configuration

In code, it looks like this (first field only):

1
2
3
4
5
TextField(
  decoration: InputDecoration(
    labelText: 'First name',
  ),
)

TextField widget handles all that heavy work related to animating labels and changing colors for you. But already, in this example, you can spot a crucial element - InputDecoration.

How to add a border to the TextField

If you read the previous paragraph, you expect what will happen - InputDecoration is where you can control the border. There is a border property that expects an object that implements InputBorder. By default, UnderlineInputBorder is used, but to get a closed border, you should provide OutlineInputBorder.

1
2
3
4
5
6
TextField(
  decoration: InputDecoration(
    labelText: 'First name',
    border: OutlineInputBorder(),
  ),
)

And again, the heavy lifting was done by the Flutter team. Label moves out of the scope and lands on the border for free — the same with the color of focused or fields with error.

If the default behavior doesn’t fit the style of your application, you can go wild with *Border named fields like errorBorder, focusedBorder, and disabledBorder.

Flutter TextField with additional InputDecoration

OutlineInputBorder is not just an empty class. You can configure different aspects of the border display.

1
2
3
4
5
6
7
8
9
10
OutlineInputBorder(
  borderSide: BorderSide(
    width: 2,
    color: Colors.amber,
  ),
  borderRadius: BorderRadius.only(
    topLeft: Radius.circular(8),
    bottomRight: Radius.circular(8),
  ),
)

Of course, InputDecoration offers more - background color, suffix, and prefix widget/icon, hint text, and text styling, to name a few.

Summary

TextField has an extensive API that allows customization. Setting border over field is a common task, so the Flutter team prepared OutlineInputBorder for us, which makes that task easy.

Complexity: Basic

Used Flutter version: 3.7.3

This post is licensed under CC BY 4.0 by the author.

How to align your Figma design texts pixel-perfect in Flutter

My daily drivers - MacOS applications - March 2023