1、在MaterialApp中修改主题
inputDecorationTheme: InputDecorationTheme(
border: OutlineInputBorder(),
),
示例位置
ThemeData _buildShrineTheme() {
final ThemeData base = ThemeData.light();
return base.copyWith(
accentColor: kShrineBrown900,
primaryColor: kShrinePink100,
buttonColor: kShrinePink100,
scaffoldBackgroundColor: kShrineBackgroundWhite,
cardColor: kShrineBackgroundWhite,
textSelectionColor: kShrinePink100,
errorColor: kShrineErrorRed,
primaryIconTheme: base.iconTheme.copyWith(
color: kShrineBrown900,
),
textTheme: _buildShrineTextTheme(base.textTheme),
primaryTextTheme: _buildShrineTextTheme(base.primaryTextTheme),
accentTextTheme: _buildShrineTextTheme(base.accentTextTheme),
//输入框的主题样式
inputDecorationTheme: InputDecorationTheme(
border: OutlineInputBorder(),
),
);
}
2、取消filled属性
TextField(
obscureText: true,
controller: _passwordController,
decoration: InputDecoration(
//filled: true,
labelText: "Password",
),
),
3、进阶:修改颜色增强对比度
3.1、在TextFiled所在的类中新建如下:
class AccentColorOverride extends StatelessWidget {
final Color color;
final Widget child;
const AccentColorOverride({Key key, this.color, this.child})
: super(key: key);
@override
Widget build(BuildContext context) {
return Theme(
child: child,
data: Theme.of(context).copyWith(primaryColor: color),
);
}
}
3.2、使用AccentColorOverride包裹TextFiled
AccentColorOverride(
color: kShrineBrown900,
child: TextField(
controller: _usernameController,
decoration: InputDecoration(
//filled: true,
labelText: "UserName",
),
),
),
原始TextFiled风格

第1、2步修改过后的效果

第三步修改之后效果
