我正在为登录/注册页面制作电子邮件/密码输入框。
我将InputDecoration提取为一个常量,因为有很多重叠的样式(边框,填充等)。
const kTextFieldDeco = InputDecoration(
hintText: '',
contentPadding: ... ,
border: ...
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.Red, width: 1.0),
borderRadius: BorderRadius.all(Radius.circular(15.0)),
),
focusedBorder: <same as above except for width being 2.0>
);
问题是,我想将“电子邮件” inputBox边框设为“红色”,将“密码” inputBox边框设为“蓝色”。
TextField(
onChanged: (val) {}
decoration: kTextfieldDeco.copyWith(
hintText: 'Enter password',
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.Blue, width: 1.0),
),
focusedBorder: <same as above except for width being 2.0>
),
),
但是copyWith()只是用新的OutlineInputBorder覆盖了kTextfieldDeco的enableBorder,因此borderRadius消失了。
有没有一种方法可以使Flutter提供我可以更改嵌套多个级别的单个字段的方法?还是只需要将整个OutlineInputBorder复制并粘贴到“ enabledBorder和focusedBorder”中,即可保持以kTextFieldDecoration编写的样式?
提前谢谢