繁体   English   中英

flutter - 如何删除 TextFormField 中错误的内容填充?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM