@@ -7,16 +7,14 @@ import 'package:flutter_secure_dotenv/flutter_secure_dotenv.dart';
77import 'package:source_gen/source_gen.dart' ;
88import 'package:source_helper/source_helper.dart' ;
99
10- final _fieldKeyChecker = const TypeChecker .fromRuntime (FieldKey );
10+ const _fieldKeyChecker = TypeChecker .fromUrl (
11+ 'package:flutter_secure_dotenv/flutter_secure_dotenv.dart#FieldKey' ,
12+ );
1113
1214/// Abstract class representing a field with its associated metadata.
1315abstract class Field <T > {
1416 /// Creates an instance of [Field] .
15- const Field (
16- this ._element,
17- this .jsonKey,
18- this .value,
19- );
17+ const Field (this ._element, this .jsonKey, this .value);
2018
2119 /// Factory method to create a [Field] instance based on the type of the field.
2220 static Field <dynamic > of ({
@@ -49,7 +47,8 @@ abstract class Field<T> {
4947 }
5048
5149 throw UnsupportedError (
52- 'Unsupported type for ${element .enclosingElement3 .name }.$jsonKey : $type ' );
50+ 'Unsupported type for ${element .enclosingElement .name }.$jsonKey : $type ' ,
51+ );
5352 }
5453
5554 /// Returns the JSON key for the given [element] based on the [rename] strategy and [nameOverride] .
@@ -58,7 +57,7 @@ abstract class Field<T> {
5857 FieldRename rename,
5958 String ? nameOverride,
6059 ) {
61- final key = element.name;
60+ final key = element.name! ;
6261 String jsonKey;
6362
6463 switch (rename) {
@@ -98,9 +97,11 @@ abstract class Field<T> {
9897 final identifier = type.element? .library? .identifier;
9998 if (identifier == null ) return null ;
10099
101- for (final e in _element.library.importedLibraries) {
102- if (e.library.identifier != identifier) continue ;
103- return e.name;
100+ for (final import in _element.library.firstFragment.libraryImports) {
101+ final importedLib = import.importedLibrary;
102+ if (importedLib == null ) continue ;
103+ if (importedLib.identifier != identifier) continue ;
104+ return import.prefix? .element.name;
104105 }
105106 return null ;
106107 }
@@ -151,11 +152,7 @@ abstract class Field<T> {
151152/// A class representing a string field.
152153class StringField extends Field <String > {
153154 /// Creates an instance of [StringField] .
154- const StringField (
155- super .element,
156- super .name,
157- super .value,
158- );
155+ const StringField (super .element, super .name, super .value);
159156
160157 @override
161158 String ? parseValue () => value;
@@ -169,11 +166,7 @@ class StringField extends Field<String> {
169166/// A class representing an integer field.
170167class IntField extends Field <int > {
171168 /// Creates an instance of [IntField] .
172- const IntField (
173- super .element,
174- super .name,
175- super .value,
176- );
169+ const IntField (super .element, super .name, super .value);
177170
178171 @override
179172 int ? parseValue () {
@@ -185,11 +178,7 @@ class IntField extends Field<int> {
185178/// A class representing a double field.
186179class DoubleField extends Field <double > {
187180 /// Creates an instance of [DoubleField] .
188- const DoubleField (
189- super .element,
190- super .name,
191- super .value,
192- );
181+ const DoubleField (super .element, super .name, super .value);
193182
194183 @override
195184 double ? parseValue () {
@@ -201,11 +190,7 @@ class DoubleField extends Field<double> {
201190/// A class representing a boolean field.
202191class BoolField extends Field <bool > {
203192 /// Creates an instance of [BoolField] .
204- const BoolField (
205- super .element,
206- super .name,
207- super .value,
208- );
193+ const BoolField (super .element, super .name, super .value);
209194
210195 @override
211196 bool ? parseValue () {
@@ -230,18 +215,13 @@ class BoolField extends Field<bool> {
230215/// A class representing an enum field.
231216class EnumField extends Field <String > {
232217 /// Creates an instance of [EnumField] .
233- const EnumField (
234- super .element,
235- super .name,
236- super .value,
237- );
218+ const EnumField (super .element, super .name, super .value);
238219
239220 @override
240221 String ? parseValue () {
241222 if (value == null ) return null ;
242223
243- final values = (type as InterfaceType )
244- .accessors
224+ final values = (type as InterfaceType ).getters
245225 .where ((e) => e.returnType.isAssignableTo (type))
246226 .map ((e) => e.name);
247227 if (! values.contains (value)) {
@@ -278,10 +258,7 @@ class EnumField extends Field<String> {
278258/// A class representing field information.
279259class FieldInfo {
280260 /// Creates an instance of [FieldInfo] .
281- FieldInfo (
282- this .name,
283- this .defaultValue,
284- );
261+ FieldInfo (this .name, this .defaultValue);
285262
286263 /// The name of the field.
287264 final String ? name;
0 commit comments