@@ -131,7 +131,12 @@ class FormBuilderPhoneFieldState extends State<FormBuilderPhoneField> {
131
131
Country _selectedDialogCountry;
132
132
133
133
String get fullNumber {
134
- return "+${_selectedDialogCountry .phoneCode }${_effectiveController .text }" ;
134
+ // When there is no phone number text, the field is empty -- the country
135
+ // prefix is only prepended when a phone number is specified.
136
+ final phoneText = _effectiveController.text;
137
+ return phoneText.isNotEmpty
138
+ ? '+${_selectedDialogCountry .phoneCode }$phoneText '
139
+ : phoneText;
135
140
}
136
141
137
142
@override
@@ -154,7 +159,7 @@ class FormBuilderPhoneFieldState extends State<FormBuilderPhoneField> {
154
159
super .initState ();
155
160
}
156
161
157
- _parsePhone () async {
162
+ Future < void > _parsePhone () async {
158
163
if (_initialValue != null && _initialValue.isNotEmpty) {
159
164
try {
160
165
var parseResult = await PhoneNumber ().parse (_initialValue);
@@ -170,11 +175,10 @@ class FormBuilderPhoneFieldState extends State<FormBuilderPhoneField> {
170
175
}
171
176
}
172
177
173
- _invokeChange (FormFieldState field) {
174
- field.didChange (fullNumber);
175
- if (widget.onChanged != null ) {
176
- widget.onChanged (fullNumber);
177
- }
178
+ void _invokeChange (FormFieldState field) {
179
+ final newFullNumber = fullNumber;
180
+ field.didChange (newFullNumber);
181
+ widget.onChanged? .call (newFullNumber);
178
182
}
179
183
180
184
@override
@@ -206,6 +210,7 @@ class FormBuilderPhoneFieldState extends State<FormBuilderPhoneField> {
206
210
focusNode: _readOnly ? AlwaysDisabledFocusNode () : widget.focusNode,
207
211
decoration: widget.decoration.copyWith (
208
212
enabled: ! _readOnly,
213
+ errorText: field.errorText,
209
214
// prefixIcon: widget.decoration.prefixIcon == null ? _textFieldPrefix(field) : widget.decoration.prefixIcon,
210
215
// prefix: widget.decoration.prefixIcon != null ? _textFieldPrefix(field) : null,
211
216
prefix: _textFieldPrefix (field),
0 commit comments