buildInputItem static method

Widget buildInputItem({
  1. String? title,
  2. String? subTitle,
  3. Color? titleColor,
  4. Color? bgColor,
  5. String? unitName,
  6. String? inputHint,
  7. String? text,
  8. TextStyle? style,
  9. TextStyle? hintStyle,
  10. EdgeInsetsGeometry? padding,
  11. bool setPadding = false,
  12. dynamic onchanged(
    1. String value
    )?,
  13. bool enable = true,
  14. int? decimalRange,
  15. int integerRange = 10,
  16. double? height = 48,
  17. List<TextInputFormatter>? formatter,
  18. TextEditingController? controller,
  19. bool digitsOnly = false,
  20. bool numOnly = false,
  21. bool hasHorizontalPadding = true,
  22. bool isDivide = false,
  23. bool showRedStar = false,
})

digitsOnly: 数字,只能是整数 numOnly: 数字,包括小数 intRange:整数位最大长度,默认为10

Implementation

static Widget buildInputItem(
    {String? title,
    String? subTitle,
    Color? titleColor,
    Color? bgColor,
    String? unitName,
    String? inputHint,
    String? text,
    TextStyle? style,
    TextStyle? hintStyle,
    EdgeInsetsGeometry? padding,
    bool setPadding = false,
    Function(String value)? onchanged,
    bool enable = true,
    int? decimalRange,
    int integerRange = 10,
    double? height = 48,
    List<TextInputFormatter>? formatter,
    TextEditingController? controller,
    bool digitsOnly = false,
    bool numOnly = false,
    bool hasHorizontalPadding = true,
    bool isDivide = false,
    bool showRedStar = false}) {
  return Column(
    children: [
      Container(
        color: bgColor ?? FXColor.main_white,
        padding: setPadding
            ? padding
            : hasHorizontalPadding
                ? const EdgeInsets.all(12)
                : const EdgeInsets.symmetric(vertical: 12),
        height: height,
        child: Row(
          children: [
            FXText(title ?? "",
                style: FXText.content
                    .apply(color: titleColor ?? FXColor.main_black2)),
            if (showRedStar)
              ImageUtil.assetImage("images/ic_redstar.png",
                  width: 15, height: 15),
            const SizedBox(width: 4),
            FXText(subTitle ?? "",
                style: FXText.content
                    .apply(color: FXColor.main_black4, fontSizeDelta: -2)),
            const SizedBox(width: 8),
            Expanded(
              child: TextFormField(
                  controller: text == null ? controller : null,
                  enabled: enable,
                  initialValue: text,
                  textAlign: TextAlign.right,
                  keyboardType: numOnly || digitsOnly
                      ? const TextInputType.numberWithOptions(decimal: true)
                      : null,
                  inputFormatters: [
                    if (digitsOnly) FilteringTextInputFormatter.digitsOnly,
                    if (numOnly) ...[
                      Remove0PrefixFormatter(),
                      DecimalTextInputFormatter(
                          decimalRange: decimalRange ?? 2,
                          integerRange: integerRange),
                      FilteringTextInputFormatter.allow(RegExp("[0-9.]")),
                      ...?formatter,
                    ]
                  ],
                  decoration: InputDecoration(
                      isCollapsed: true,
                      border: InputBorder.none,
                      hintText: inputHint,
                      hintStyle: hintStyle ??
                          FXText.content.apply(color: FXColor.main_black4)),
                  onChanged: onchanged,
                  style: style),
            ),
            if (unitName != null && unitName.isNotEmpty) ...[
              const SizedBox(
                width: 4,
              ),
              FXText(unitName,
                  style: FXText.content.apply(color: FXColor.main_black1)),
            ],
          ],
        ),
      ),
      if (isDivide)
        EditCommonUi.buildDividerItem(
            isMargin: hasHorizontalPadding ? true : false),
    ],
  );
}