editText function

dynamic editText()

Implementation

editText() {
  return """
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import '../constants.dart';

class EditText extends StatelessWidget {
  EditText({
    Key? key,
    this.title,
    required this.controller,
    this.validator,
    this.padding = 16.0,
    this.press,
    this.enable = true,
    this.isPassword = false,
    this.radius = 6,
    this.maxlines = 1,
    this.keyboard = TextInputType.text,
    this.inputFormat,
    this.prefix,
    this.action = TextInputAction.next,
    this.suffix,
    this.onChange,
    this.hint = '',
    this.alignment = TextAlign.start,
    this.background = Colors.transparent,
  }) : super(key: key);

  final String? title;
  final TextEditingController controller;
  final bool isPassword;
  final FormFieldValidator<String>? validator;
  final double padding;
  final Function()? press;
  final bool enable;
  final double radius;
  final int maxlines;
  final TextInputType keyboard;
  final TextInputFormatter? inputFormat;
  final TextInputAction action;
  final Widget? prefix;
  final Widget? suffix;
  final VoidCallback? onChange;
  final _debouncer = Debouncer(milliseconds: 500);
  final String hint;
  final TextAlign alignment;
  final background;

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        SizedBox(
          height: padding,
        ),
        if (title != null)
          Text(
            title!,
            style: const TextStyle(
              fontSize: 13.0,
              color: Colors.black54,
              fontWeight: FontWeight.w500,
            ),
          ),
        const SizedBox(
          height: 6,
        ),
        TextFormField(
          onTap: press,
          controller: controller,
          obscureText: isPassword,
          validator: validator,
          enabled: enable,
          readOnly: press != null,
          maxLines: maxlines,
          textCapitalization: TextCapitalization.sentences,
          textInputAction: action,
          keyboardType: keyboard,
          inputFormatters:
              inputFormat != null ? <TextInputFormatter>[inputFormat!] : [],
          onChanged: onChange != null
              ? (v) {
                  _debouncer.run(() {
                    if (onChange != null) {
                      onChange!();
                    }
                  });
                }
              : null,
          decoration: InputDecoration(
              hintText: hint,
              isDense: true,
              prefixIcon: prefix != null
                  ? SizedBox(
                      child: Center(
                        widthFactor: 0.0,
                        child: prefix,
                      ),
                    )
                  : null,
              suffixIcon: suffix != null
                  ? SizedBox(
                      child: Center(
                        widthFactor: 0.0,
                        child: suffix,
                      ),
                    )
                  : null,
              contentPadding:
                  const EdgeInsets.symmetric(horizontal: 12, vertical: 10),
              enabledBorder: OutlineInputBorder(
                borderSide: BorderSide(
                  color: Colors.black.withAlpha(40),
                ),
                borderRadius: BorderRadius.circular(radius),
              ),
              focusedBorder: OutlineInputBorder(
                borderSide: BorderSide(
                  color: primaryColor.withAlpha(90),
                ),
                borderRadius: BorderRadius.circular(radius),
              ),
              errorBorder: OutlineInputBorder(
                borderSide: BorderSide(
                  color: Colors.red.withAlpha(50),
                ),
                borderRadius: BorderRadius.circular(radius),
              ),
              border: OutlineInputBorder(
                borderSide: BorderSide(
                  color: Colors.black.withAlpha(50),
                ),
                borderRadius: BorderRadius.circular(radius),
              ),
              fillColor: background,
              filled: true),
          textAlign: alignment,
        ),
      ],
    );
  }
}

class Debouncer {
  final int milliseconds;
  Timer? _timer;

  Debouncer({required this.milliseconds});

  run(VoidCallback action) {
    _timer?.cancel();
    _timer = Timer(Duration(milliseconds: milliseconds), action);
  }
}

""";
}