在大学为 flutter 应用程序做 UI,我只希望在 TextFormField 中输入的文本为白色。这似乎不必要地困难。我尝试过谷歌搜索等,但看不到明显的答案。
new Theme(
// this colors the underline
data: theme.copyWith(
primaryColor: Colors.white,
hintColor: Colors.transparent,
),
child: new Padding(
padding: const EdgeInsets.fromLTRB(32.0, 40.0, 32.0, 4.0),
child: TextFormField(
key: Key('username'),
keyboardType: TextInputType.text,
controller: usernameController,
decoration: InputDecoration(
fillColor: Colors.black.withOpacity(0.6),
filled: true,
border: new OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(8.0),
),
borderSide: new BorderSide(
color: Colors.transparent,
width: 1.0,
),
),
labelText: 'Username',
labelStyle:
new TextStyle(color: Colors.white, fontSize: 16.0)),
style:
TextStyle(fontSize: 20.0, color: textTheme.button.color),
validator: validateUserName,
onSaved: (val) => this.loginFields._username = val),
),
),
这样就可以了:
TextFormField(
style: TextStyle(color: Colors.white),
)
对于尝试从材质应用程序的
theme: ThemeData
属性执行此操作的任何人,可以使用 subtitle1
文本主题样式更改颜色。
MaterialApp(
...
theme: ThemeData(
...
textTheme: const TextTheme(
...
subtitle1: const TextStyle(
color: Colors.red, // <-- TextFormField input color
),
),
),
)
您可以在 TextFormField 中使用 style。
TextFormField(
style: const TextStyle(color: Colors.white),
),
Puedes usar
style: TextStyle
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
TextFormField(
controller: field,
style: TextStyle(fontSize: 18, color: Colors.red),
decoration: const InputDecoration(
contentPadding: const EdgeInsets.only(
left: 15, top: 8, right: 15, bottom: 0),
hintText: 'name',
),
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
],
),
),
],
),
),
你可以用它来改变一切
TextFormField(
//controller: _phoneController,
cursorColor: Colors.black,
keyboardType: TextInputType.text,
style: TextStyle(
color: Colors.black
),
decoration: new InputDecoration(
hintStyle: TextStyle(
color: Colors.white
),
border: InputBorder.none,
//contentPadding:
//EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
hintText: "New Playlist"),
),
使用
ThemeData
: 更改输入文本颜色
在材料 2
TextField
中使用 titleMedium
。
ThemeData(
...
textTheme: const TextTheme(
...
titleMedium: const TextStyle(
color: Colors.red, // <-- TextFormField input color
),
),
),
在材料 3
TextField
中使用 bodyLarge
。
ThemeData(
...
textTheme: const TextTheme(
...
bodyLarge: const TextStyle(
color: Colors.red, // <-- TextFormField input color
),
),
),
关注此 Github 问题以获取任何更改
要在本地使用样式,请使用:
TextFormField(
style: TextStyle(color: Colors.white),
)
要全局设置颜色(2023年后不推荐使用字幕文本样式时),唯一的方法是设置titleMedium文本样式。
ThemeData(
...
textTheme: const TextTheme(
...
titleMedium: const TextStyle(
color: Colors.white,
),
),
),
如果没有设置本地文本样式,Flutter默认使用titleMedium样式作为输入样式。
Padding(
padding: EdgeInsets.all(10),
child: TextFormField(
cursorColor: Color(0XFFFFCC00)//Cursor color change
style: TextStyle(
color: Color(0XFFFFCC00),
decorationColor: Color(0XFFFFCC00),//Font color change
backgroundColor: Color(0XFFFFCC00),//TextFormField title background color change
),
),
TextStyle(fontSize: 20.0, color: textTheme.button.color)
,因此为了设置为
white
,只需使用
Colors.white
常量而不是
textTheme.button.color
。有关文本样式的更多信息
此处。
现在 TextField 正在使用
titleMedium
。那么,
ThemeData(
...
textTheme: const TextTheme(
...
titleMedium: const TextStyle(
color: Colors.red, // <-- TextFormField input color
),
),
),
TextFormField(
style: MediumStyle,
keyboardType: TextInputType.emailAddress,
focusNode: _employeeEmailFocus,
decoration: InputDecoration(labelText: "Employee Email", labelStyle:MediumBoldStyle),
validator: (val)=> null,
onSaved:(value)=> this._employeeEmail=value,
onFieldSubmitted: (term){
_fieldFocusChange(context,_employeeEmailFocus,_passwordFocus);
},
),
decoration: const InputDecoration(
labelStyle: TextStyle(color: Colors.white),
),
decoration: InputDecoration(
prefixStyle: new TextStyle(
),