xSch_TextFormField_Builder<T> method
Widget
xSch_TextFormField_Builder<T>({
- required BuildContext context,
- required XCol xCol,
- dynamic onChanged()?,
- dynamic onSubmitted()?,
- String? hintText,
- List<
TextInputFormatter> ? inputFormatters, - TextInputType? keyboardType,
- bool editable = true,
- bool label_Visible = true,
- bool autoFocus = false,
- String? value,
- bool? selectText,
- bool? multiLines,
- double? height,
- int? maxLines,
- Color? borderColor,
- Color? borderColor_Disabled,
- Color? labelColor_Disabled,
- Color? backgorundColor,
- Color? textColor,
- Color? backgorundColor_Disabled,
- TextEditingController? controller,
- dynamic onBefore_Edit()?,
TextFormField Editor Generico da Usare
Implementation
Widget xSch_TextFormField_Builder<T>({
required BuildContext context,
required XCol xCol,
Function(String)? onChanged,
Function(String)? onSubmitted,
String? hintText,
List<TextInputFormatter>? inputFormatters,
TextInputType? keyboardType,
bool editable = true,
bool label_Visible = true,
bool autoFocus = false,
String? value,
bool? selectText,
bool? multiLines,
double? height,
int? maxLines,
Color? borderColor,
Color? borderColor_Disabled,
Color? labelColor_Disabled,
Color? backgorundColor,
Color? textColor,
Color? backgorundColor_Disabled,
TextEditingController? controller,
Function()? onBefore_Edit,
}) {
OutlineInputBorder o = OutlineInputBorder(borderSide: BorderSide(color: editable.not() ? (borderColor_Active ? (xCol.xmodelXprop.col_Color == Colors.black ? (borderColor ?? Colors.grey[400]!) : xCol.xmodelXprop.col_Color) : borderColor ?? Colors.grey[400]!) : (borderColor_Disabled ?? Colors.grey[400]!), width: 1));
var f = FocusScope(
onFocusChange: (value) {
if (value) {
if (controller != null && xCol.dataType != DateTime) controller.selection = TextSelection(baseOffset: 0, extentOffset: controller.text.length);
}
},
child: Container(
margin: EdgeInsets.only(top: 2),
child: XTextFormField(
controller: value != null ? null : controller,
border: o,
disabledBorder: o,
enabledBorder: o,
label: label_Visible ? xCol.colCaption + (editable ? "🔒" : "") : "",
onChanged: onChanged,
onFieldSubmitted: (value) => onSubmitted == null ? null : onSubmitted(value!),
autoFocus: autoFocus,
onTap: () async {
if (controller != null && xCol.dataType != String) controller.selection = TextSelection(baseOffset: 0, extentOffset: controller.text.length);
if (onBefore_Edit != null) {
// FocusScope.of(context).unfocus();
await onBefore_Edit();
}
},
initialValue: controller != null ? null : value,
maxLines: maxLines,
maxLenght: xCol.maxLenght == 0 ? null : xCol.maxLenght,
isCollapsed: false,
enabled: editable.not(),
height: null,
fillColor: editable ? Colors.transparent : XSchedaState.color_CellBackGorundDisabled,
filled: XSchedaState.color_CellBackGorundDisabled != null ? true : false,
multiLines: (xCol.colCaption.toLowerCase().contains("email") || (xCol.colKey.contains("sconti") || xCol.colKey.contains("sconto")) || xCol.colCaption.toLowerCase().contains("inidrizzo") || xCol.colCaption.toLowerCase().contains("ind"))
? false
: ((xCol.colCaption.toLowerCase().contains("cell")) || (xCol.colCaption.toLowerCase().contains("tel")))
? false
: multiLines ?? false,
suffixIcon: xCol.format == "C" ? Icon(Icons.euro, size: 20) : null,
suffixIconConstraints: BoxConstraints(maxWidth: 20, minWidth: 20, maxHeight: 30, minHeight: 30),
contentPadding: EdgeInsets.only(top: 8, left: 5, bottom: 8),
textStyle: XStyles.xStyTextForDescr(textColor: textColor ?? XSchedaState.color_Text),
textAlign: xCol.dataType == int || xCol.dataType == double ? TextAlign.end : TextAlign.start,
labelStyle: XStyles.xStyTextForLabel(
textColor: xCol.xmodelXprop.col_Color == Colors.black || (xCol.xmodelXprop.col_Color == Colors.white && widget.backGroundColor == Colors.white)
? ThemeData.estimateBrightnessForColor(widget.backGroundColor!) == Brightness.light
? XColors.foregroundDark
: XColors.foregroundLight
: xCol.xmodelXprop.col_Color), //XSchedaState.colorOfHintText
keyboardType: keyboardType ??
((xCol.colCaption.toLowerCase().contains("email"))
? TextInputType.emailAddress
: ((xCol.colCaption.toLowerCase().contains("cell")) || (xCol.colCaption.toLowerCase().contains("tel")))
? TextInputType.phone
: (xCol.colKey.contains("sconti") || xCol.colKey.contains("sconto"))
? TextInputType.number
: TextInputType.text),
textCapitalization: (xCol.dataType == String && xCol.colKey.startsWith("li").not())
? TextCapitalization.sentences //
: TextCapitalization.none,
hintText: editable ? "..." : (hintText ?? "..."),
hintStyle: XStyles.xStyTextForSubDescr(textColor: XSchedaState.color_HintText),
inputFormatters: inputFormatters ?? [],
)));
;
return f;
}