0Day Forums
Change TextField's Underline in Flutter - Printable Version

+- 0Day Forums (https://0day.red)
+-- Forum: Coding (https://0day.red/Forum-Coding)
+--- Forum: Flutter & Dart (https://0day.red/Forum-Flutter-Dart)
+--- Thread: Change TextField's Underline in Flutter (/Thread-Change-TextField-39-s-Underline-in-Flutter)



Change TextField's Underline in Flutter - Mrgregoryxvkk - 07-21-2023

I'm working on an application using Flutter SDK. When I use a [`TextField`][text] widget, and I focus it, the underline becomes blue. I need to change this color to red, how can I do it?

Screenshot of what I need to change. I want just the underline to change, **, not the label color.**

![Screenshot of what I need to change. (I want the underline to change, not the label color)][1]



[text]:

[To see links please register here]

[1]:




RE: Change TextField's Underline in Flutter - emlynnqzkyigj - 07-21-2023

I haven't tried it yet, but I had a look at the docs for you.

Looking at the [TextField](

[To see links please register here]

) class you can set an [InputDecoration](

[To see links please register here]

), which in turn has an [InputBorder](

[To see links please register here]

). Setting that to an [UnderlineInputBorder](

[To see links please register here]

) with your own [BorderSide](

[To see links please register here]

) should do the trick I guess. You can set the color of the BorderSide.

You can also set an InputBorder in the global [InputDecorationTheme](

[To see links please register here]

) if you want all textfields to have the same style.


RE: Change TextField's Underline in Flutter - surroyals878329 - 07-21-2023

I have used **InputDecoration.collapsed** to remove the divider and I am changing the color of the bottom border.

If you enter a name the bottom border color is **blue** and if you enter a number or other special characters then the bottom border color is **red**

[![demo][1]][1]


[1]:



import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);

final String title;

@override
_MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
static const EdgeInsets _padding = const EdgeInsets.symmetric(horizontal: 20.0, vertical: 8.0);
Color borderColor = Colors.blue;
bool nameFlag = false;

@override
void initState() {
super.initState();
}

void validateName(String value) {
final RegExp nameExp = new RegExp(r'^[A-Za-z ]+$');
if (!nameExp.hasMatch(value) || value.isEmpty)
borderColor = Colors.red;
else
borderColor = Colors.blue;
}

@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Column(children: <Widget>[
new Flexible(
child: new Container(
margin: _padding,
padding: _padding,
child: new TextField(
decoration: new InputDecoration.collapsed(
hintText: "Enter Name",
),
onChanged: (s) {
setState(() => validateName(s));
},
),
decoration: new BoxDecoration(
color: Colors.white,
border: new Border(
bottom: new BorderSide(color: borderColor, style: BorderStyle.solid),
),
),
),
)
]),
);
}
}

Let me know if this answers your question :)



RE: Change TextField's Underline in Flutter - aranluh - 07-21-2023

While these other answers may somehow work, you should definitely **not** use it.
That's not the proper way to get a custom theme in Flutter.


A much more elegant solution is as followed :

final theme = Theme.of(context);

return new Theme(
data: theme.copyWith(primaryColor: Colors.red),
child: new TextField(
decoration: new InputDecoration(
labelText: "Hello",
labelStyle: theme.textTheme.caption.copyWith(color: theme.primaryColor),
),
),
);



At the same time, if you just want to show an error (Red), use `errorText` of `InputDecoration` instead. It will automatically set the color to red.


RE: Change TextField's Underline in Flutter - respoke565364 - 07-21-2023

You can also change its color by following ways.

1. Wrap your `TextField` in `Theme` and provide `accentColor`

Theme(
data: Theme.of(context).copyWith(accentColor: Colors.red),
child: TextField(),
)

2. Using `inputDecoration` property.

TextField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red),
),
),
)