changed housenumber to String

This commit is contained in:
Thomas Klein Langenhorst 2022-10-19 12:38:08 +02:00
parent 1107729c79
commit 1b4d920586
2 changed files with 11 additions and 5 deletions

View file

@ -4,6 +4,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_address_form/src/models/address_model.dart'; import 'package:flutter_address_form/src/models/address_model.dart';
/// A widget that creates a form with different address fields widgets.
/// Returns a `AddressModel` Object from a `AddressController`.
class AddressForm extends StatelessWidget { class AddressForm extends StatelessWidget {
AddressForm({ AddressForm({
Key? key, Key? key,
@ -35,6 +37,7 @@ class AddressForm extends StatelessWidget {
final String? Function(String) streetValidator; final String? Function(String) streetValidator;
final String? Function(String) cityValidator; final String? Function(String) cityValidator;
/// Controls the `AddressModel`
late final AddressController _addressController; late final AddressController _addressController;
@override @override
@ -112,7 +115,10 @@ class AddressFormTextField extends StatelessWidget {
} }
class AddressController extends ChangeNotifier { class AddressController extends ChangeNotifier {
/// An optional value to initialize the form field to, or null otherwise.
final AddressModel? initialValue; final AddressModel? initialValue;
/// When the form changes, the function passes the current `AddressModel` as an argument and gives the possibility to manipulate and return a `AddressModel`.
final FutureOr<AddressModel> Function(AddressModel)? onAutoComplete; final FutureOr<AddressModel> Function(AddressModel)? onAutoComplete;
AddressController({this.initialValue, this.onAutoComplete}) { AddressController({this.initialValue, this.onAutoComplete}) {
@ -139,7 +145,7 @@ class AddressController extends ChangeNotifier {
late final _streetController = late final _streetController =
TextEditingController(text: initialValue?.street); TextEditingController(text: initialValue?.street);
late final _housenumberController = late final _housenumberController =
TextEditingController(text: initialValue?.housenumber.toString()); TextEditingController(text: initialValue?.housenumber);
late final _suffixController = late final _suffixController =
TextEditingController(text: initialValue?.suffix); TextEditingController(text: initialValue?.suffix);
late final _cityController = TextEditingController(text: initialValue?.city); late final _cityController = TextEditingController(text: initialValue?.city);
@ -150,7 +156,7 @@ class AddressController extends ChangeNotifier {
AddressModel updatedModel = _model.copyWith( AddressModel updatedModel = _model.copyWith(
zipcode: _zipcodeController.text, zipcode: _zipcodeController.text,
street: _streetController.text, street: _streetController.text,
housenumber: int.tryParse(_housenumberController.text), housenumber: _housenumberController.text,
suffix: _suffixController.text, suffix: _suffixController.text,
city: _cityController.text); city: _cityController.text);
_model = await onAutoComplete?.call(updatedModel) ?? updatedModel; _model = await onAutoComplete?.call(updatedModel) ?? updatedModel;
@ -162,7 +168,7 @@ class AddressController extends ChangeNotifier {
_streetController.text = _model.street ?? ''; _streetController.text = _model.street ?? '';
} }
if (_model.housenumber != updatedModel.housenumber) { if (_model.housenumber != updatedModel.housenumber) {
_housenumberController.text = _model.housenumber?.toString() ?? ''; _housenumberController.text = _model.housenumber ?? '';
} }
if (_model.suffix != updatedModel.suffix) { if (_model.suffix != updatedModel.suffix) {
_suffixController.text = _model.suffix ?? ''; _suffixController.text = _model.suffix ?? '';

View file

@ -12,14 +12,14 @@ class AddressModel {
final String? zipcode; final String? zipcode;
final String? street; final String? street;
final int? housenumber; final String? housenumber;
final String? suffix; final String? suffix;
final String? city; final String? city;
AddressModel copyWith({ AddressModel copyWith({
String? zipcode, String? zipcode,
String? street, String? street,
int? housenumber, String? housenumber,
String? suffix, String? suffix,
String? city, String? city,
}) => }) =>