37
loading...
This website collects cookies to deliver better user experience
enum FarmType { add, update }
. This enum value will be passed to the FarmerFormScreen()
widget to modify the screen into an add farmer form and an update farmer form.class FarmerFormScreen extends StatefulWidget {
static String routeName = 'AddFarmerScreen';
final FarmerServiceModel? farmerModel;
final FormType formType;
FarmerFormScreen({
this.farmerModel,
required this.formType,
Key? key,
}) : super(key: key);
@override
_FarmerFormScreenController createState() => _FarmerFormScreenController();
}
final FarmerServiceModel? farmerModel;
that will be used to update the farmer document.class _FarmerFormScreenController extends State<FarmerFormScreen> {
@override
Widget build(BuildContext context) => _FarmerFormScreenView(this);
late TextEditingController dateOfBirthController;
@override
void initState() {
super.initState();
dateOfBirthController = TextEditingController();
if (widget.formType == FormType.update) {
dateOfBirthController = TextEditingController(
text: DateFormat.yMMMd().format(widget.farmerModel!.dateOfBirth!));
} else {
dateOfBirthController = TextEditingController();
}
}
class LastNameTextFormField extends StatelessWidget {
const LastNameTextFormField({
Key? key,
required this.state,
}) : super(key: key);
final _FarmerFormScreenController state;
@override
Widget build(BuildContext context) {
return TextFormField(
decoration: FormStyles.textFieldDecoration(labelText: 'Last Name'),
focusNode: state.lastNameFocusNode,
textInputAction: TextInputAction.next,
autovalidateMode: AutovalidateMode.onUserInteraction,
validator: state.farmer.validateRequiredField,
onSaved: state.farmer.saveLastName,
initialValue: state.widget.formType == FormType.update
? state.widget.farmerModel!.lastName
: null,
);
}
}
state.widget.formType == FormType.update
and null otherwise. This same methodology was repeated for all other form field widgets. 37