generateAppTextField static method

String generateAppTextField()

Implementation

static String generateAppTextField() {
  return '''
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class AppTextField extends StatelessWidget {
final String label;
final String? hint;
final TextEditingController? controller;
final String? Function(String?)? validator;
final TextInputType? keyboardType;
final bool obscureText;
final IconData? prefixIcon;
final Widget? suffixIcon;
final int? maxLines;
final int? maxLength;
final bool enabled;
final bool readOnly;
final VoidCallback? onTap;
final Function(String)? onChanged;
final List<TextInputFormatter>? inputFormatters;
final TextCapitalization textCapitalization;
final String? helperText;

const AppTextField({
  Key? key,
  required this.label,
  this.hint,
  this.controller,
  this.validator,
  this.keyboardType,
  this.obscureText = false,
  this.prefixIcon,
  this.suffixIcon,
  this.maxLines = 1,
  this.maxLength,
  this.enabled = true,
  this.readOnly = false,
  this.onTap,
  this.onChanged,
  this.inputFormatters,
  this.textCapitalization = TextCapitalization.none,
  this.helperText,
}) : super(key: key);

@override
Widget build(BuildContext context) {
  final theme = Theme.of(context);

  return TextFormField(
    controller: controller,
    validator: validator,
    keyboardType: keyboardType,
    obscureText: obscureText,
    maxLines: maxLines,
    maxLength: maxLength,
    enabled: enabled,
    readOnly: readOnly,
    onTap: onTap,
    onChanged: onChanged,
    inputFormatters: inputFormatters,
    textCapitalization: textCapitalization,
    style: const TextStyle(fontSize: 16),
    decoration: InputDecoration(
      labelText: label,
      hintText: hint,
      helperText: helperText,
      prefixIcon: prefixIcon != null
          ? Icon(prefixIcon, size: 22)
          : null,
      suffixIcon: suffixIcon,
      border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(16),
        borderSide: BorderSide(
          color: theme.colorScheme.outline,
        ),
      ),
      enabledBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(16),
        borderSide: BorderSide(
          color: theme.colorScheme.outline.withOpacity(0.5),
        ),
      ),
      focusedBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(16),
        borderSide: BorderSide(
          color: theme.colorScheme.primary,
          width: 2,
        ),
      ),
      errorBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(16),
        borderSide: BorderSide(
          color: theme.colorScheme.error,
        ),
      ),
      focusedErrorBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(16),
        borderSide: BorderSide(
          color: theme.colorScheme.error,
          width: 2,
        ),
      ),
      filled: true,
      fillColor: theme.colorScheme.surfaceVariant.withOpacity(0.3),
      contentPadding: const EdgeInsets.symmetric(
        horizontal: 20,
        vertical: 18,
      ),
    ),
  );
}
}
''';
}