Skip to content

Commit fc1ba26

Browse files
committed
Removed unnecessary after_init package.
1 parent 7b5c8c2 commit fc1ba26

File tree

3 files changed

+29
-32
lines changed

3 files changed

+29
-32
lines changed

lib/src/form_builder_field.dart

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'package:after_init/after_init.dart';
21
import 'package:flutter/material.dart';
32
import 'package:flutter/scheduler.dart';
43
import 'package:flutter_form_builder/flutter_form_builder.dart';
@@ -76,20 +75,21 @@ abstract class FormBuilderField<T> extends FormField<T> {
7675
FormFieldState<T> createState();
7776
}
7877

79-
class FormBuilderFieldState<F extends FormBuilderField<T>, T>
80-
extends FormFieldState<T> with AfterInitMixin {
78+
abstract class FormBuilderFieldState<F extends FormBuilderField<T>, T>
79+
extends FormFieldState<T> {
8180
@override
82-
F get widget => super.widget as F;
81+
F get widget => super.widget;
8382

8483
FormBuilderState get formState => _formBuilderState;
8584

86-
bool get readOnly => _formBuilderState?.readOnly == true || widget.readOnly;
85+
bool get readOnly => widget.readOnly || _formBuilderState?.readOnly == true;
8786

87+
/// Returns the initial value, which may be declared at the field, or by the
88+
/// parent [FormBuilder.initialValue]. When declared at both levels, the field
89+
/// initialValue prevails.
8890
T get initialValue =>
8991
widget.initialValue ??
90-
((_formBuilderState?.initialValue?.containsKey(widget.name) ?? false)
91-
? _formBuilderState.initialValue[widget.name]
92-
: null);
92+
(_formBuilderState?.initialValue ?? const {})[widget.name];
9393

9494
FormBuilderState _formBuilderState;
9595

@@ -103,17 +103,32 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
103103

104104
FocusNode _focusNode;
105105

106-
FocusNode get effectiveFocusNode =>
107-
widget.focusNode ?? (_focusNode ??= FocusNode());
106+
FocusNode get effectiveFocusNode => _focusNode;
108107

109108
@override
110-
void didInitState() {
109+
void initState() {
110+
super.initState();
111+
// Register this field when there is a parent FormBuilder
111112
_formBuilderState = FormBuilder.of(context);
112113
_formBuilderState?.registerField(widget.name, this);
113-
effectiveFocusNode.addListener(setTouchedHandler);
114+
// Register a touch handler
115+
_focusNode = widget.focusNode ?? FocusNode();
116+
_focusNode.addListener(_touchedHandler);
117+
// Set the initial value
114118
setValue(initialValue);
115119
}
116120

121+
@override
122+
void dispose() {
123+
_focusNode.removeListener(_touchedHandler);
124+
// Dispose focus node when created by initState
125+
if (null == widget.focusNode) {
126+
_focusNode.dispose();
127+
}
128+
_formBuilderState?.unregisterField(widget.name);
129+
super.dispose();
130+
}
131+
117132
@override
118133
void save() {
119134
super.save();
@@ -131,10 +146,9 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
131146
}
132147
}
133148

134-
void setTouchedHandler() {
135-
if (effectiveFocusNode.hasFocus && _touched == false) {
149+
void _touchedHandler() {
150+
if (_focusNode.hasFocus && _touched == false) {
136151
setState(() => _touched = true);
137-
print('${widget.name} touched');
138152
}
139153
}
140154

@@ -160,15 +174,6 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
160174
FocusScope.of(context).requestFocus(effectiveFocusNode);
161175
}
162176

163-
@override
164-
void dispose() {
165-
effectiveFocusNode.removeListener(setTouchedHandler);
166-
_formBuilderState?.unregisterField(widget.name);
167-
// The attachment will automatically be detached in dispose().
168-
_focusNode?.dispose();
169-
super.dispose();
170-
}
171-
172177
void patchValue(T value) {
173178
didChange(value);
174179
}

pubspec.lock

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@ packages:
88
url: "https://pub.dartlang.org"
99
source: hosted
1010
version: "7.0.0"
11-
after_init:
12-
dependency: "direct main"
13-
description:
14-
name: after_init
15-
url: "https://pub.dartlang.org"
16-
source: hosted
17-
version: "0.1.2"
1811
analyzer:
1912
dependency: transitive
2013
description:

pubspec.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ dependencies:
1313
flutter_localizations:
1414
sdk: flutter
1515

16-
after_init: ^0.1.2
1716
community_material_icon: ^5.4.55
1817
# country_code_picker: ^1.6.2
1918
country_pickers: ^1.3.0

0 commit comments

Comments
 (0)