As it clear from title, which one approach is better, static function in class returns custom widget, or stateless widget class?
example for static function returns custom widget:
class FormComponent {
static Widget defaultFromField(
{@required TextEditingController controller,
@required TextInputType textInputType,
@required Icon prefixIcon,
Icon suffixIcon,
Function suffixIconPressed,
@required Function validate,
Function onTap,
Function onChange,
bool isObscureText = false,
@required String labelText,
o}) {
return TextFormField(
controller: controller,
keyboardType: textInputType,
obscureText: isObscureText,
validator: validate,
onTap: onTap,
onChanged: onChange,
decoration: InputDecoration(
prefixIcon: prefixIcon,
suffixIcon: (suffixIcon != null)
? IconButton(onPressed: suffixIconPressed, icon: suffixIcon)
: null,
labelText: labelText,
labelStyle: const TextStyle(fontSize: AppDimensions.fontSize_18),
border: const OutlineInputBorder()),
);
}
}
example for stateless widget class:
class DefaultFormField extends StatelessWidget {
final TextEditingController controller;
final TextInputType textInputType;
final Icon prefixIcon;
final Icon suffixIcon;
final Function suffixIconPressed;
final Function validate;
final Function onTap;
final Function onChange;
final bool isObscureText = false;
final String labelText;
const DefaultFormField({
Key key,
this.controller,
this.textInputType,
this.prefixIcon,
this.suffixIcon,
this.suffixIconPressed,
this.validate,
this.onTap,
this.onChange,
this.labelText,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextFormField(
controller: controller,
keyboardType: textInputType,
obscureText: isObscureText,
validator: validate,
onTap: onTap,
onChanged: onChange,
decoration: InputDecoration(
prefixIcon: prefixIcon,
suffixIcon: (suffixIcon != null)
? IconButton(onPressed: suffixIconPressed, icon: suffixIcon)
: null,
labelText: labelText,
labelStyle: const TextStyle(fontSize: AppDimensions.fontSize_18),
border: const OutlineInputBorder()),
);
}
}