[英]flutter - How can I remove the content padding for error in TextFormField?
由于内容填充,错误消息也从左侧填充开始。 如何为错误消息显示不同的内容填充。 实际上它应该从左侧边界开始。 但我需要 TextFormField 内部的内容填充,而不是错误消息。
Padding(
padding: const EdgeInsets.all(10),
child: Form(
key: _formKeyOldPassword,
onChanged: () {
setState(() {
_proceedOldPassword =
_formKeyOldPassword
.currentState!
.validate();
});
},
child: TextFormField(
controller: oldPasswordController,
obscureText: _oldPasswordVisible,
autofocus: false,
style: AppStyle().textStyleLabel,
validator: (text) {
return Validations()
.validatePassword(
text.toString().trim());
},
onChanged: (value) {
setState(() {
if (value[0].endsWith(' ')) {
oldPasswordController
.selection =
const TextSelection(
baseOffset: 0,
extentOffset: 0);
oldPasswordController.text =
value.trim();
} else {
Validations()
.validatePassword(value
.toString()
.trim());
}
});
},
decoration: InputDecoration(
suffixIcon: IconButton(
icon: Icon(_oldPasswordVisible
? Icons.visibility_off
: Icons.visibility),
color: AppColors.suffixIcon,
onPressed: () {
setState(() {
_oldPasswordVisible =
!_oldPasswordVisible;
});
},
),
border: InputBorder.none,
errorBorder: OutlineInputBorder(
borderSide: const BorderSide(
color: AppColors.error,
),
borderRadius:
BorderRadius.circular(
4.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color: AppColors.error,
),
borderRadius:
BorderRadius.circular(
4.0),
),
hintText: Strings.h006,
hintStyle:
AppStyle().textStyleHint,
filled: true,
fillColor:
AppColors.textFormFieldFill,
isDense: true,
contentPadding:
const EdgeInsets.only(
left: 20.0,
bottom: 0.0,
top: 15.0,
),
focusedBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color: AppColors
.textFormFieldFill),
borderRadius:
BorderRadius.circular(
4.0),
),
enabledBorder:
UnderlineInputBorder(
borderSide: const BorderSide(
color: AppColors
.textFormFieldFill,
),
borderRadius:
BorderRadius.circular(
10.0),
),
),
),
),
)
请分享此小部件的代码,以便我为您提供解决方案。
没有直接和官方的方法可以做到这一点。 显然,contentPadding 也适用于 errorText。
但是,我找到了一种可以为您工作的解决方法。 从 InputDecoration 的 contentPadding 中删除左填充。 而是在 InputDecoration 的前缀属性中添加此填充。 所以你最终的 InputDecoration 将如下所示:
decoration: InputDecoration(
...
contentPadding: const EdgeInsets.only(bottom: 0.0, top: 15.0),
prefix: const Padding(
padding: EdgeInsets.only(left: 20.0)),
),
...
),
这样,errorText 将从边框的左侧开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.