import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class DialogTextField extends StatelessWidget { final TextEditingController? controller; final String? hintText; final String? labelText; final String? initialText; final String? counterText; final String? prefixText; final String? suffixText; final String? errorText; final bool obscureText = false; final bool isDestructive = false; final int? minLines; final int? maxLines; final TextInputType? keyboardType; final int? maxLength; final bool autocorrect = true; const DialogTextField({ super.key, this.hintText, this.labelText, this.initialText, this.prefixText, this.suffixText, this.minLines, this.maxLines, this.keyboardType, this.maxLength, this.controller, this.counterText, this.errorText, }); @override Widget build(BuildContext context) { final prefixText = this.prefixText; final suffixText = this.suffixText; final errorText = this.errorText; final theme = Theme.of(context); switch (theme.platform) { case TargetPlatform.android: case TargetPlatform.fuchsia: case TargetPlatform.linux: case TargetPlatform.windows: return TextField( controller: controller, obscureText: obscureText, minLines: minLines, maxLines: maxLines, maxLength: maxLength, keyboardType: keyboardType, autocorrect: autocorrect, decoration: InputDecoration( errorText: errorText, hintText: hintText, labelText: labelText, prefixText: prefixText, suffixText: suffixText, counterText: counterText, ), ); case TargetPlatform.iOS: case TargetPlatform.macOS: return Column( mainAxisSize: MainAxisSize.min, children: [ CupertinoTextField( controller: controller, obscureText: obscureText, minLines: minLines, maxLines: maxLines, maxLength: maxLength, keyboardType: keyboardType, autocorrect: autocorrect, prefix: prefixText != null ? Text(prefixText) : null, suffix: suffixText != null ? Text(suffixText) : null, placeholder: labelText ?? hintText, ), if (errorText != null) Text( errorText, style: TextStyle( fontSize: 11, color: theme.colorScheme.error, ), textAlign: TextAlign.left, ), ], ); } } }