File tree 5 files changed +51
-16
lines changed
5 files changed +51
-16
lines changed Original file line number Diff line number Diff line change @@ -3,7 +3,6 @@ analyzer:
3
3
missing_required_param : error
4
4
missing_return : error
5
5
todo : ignore
6
- sdk_version_async_exported_from_core : ignore
7
6
exclude :
8
7
- ' **.g.dart'
9
8
- ' lib/util/locale/**'
Original file line number Diff line number Diff line change @@ -30,13 +30,10 @@ class MainNavigatorWidgetState extends State<MainNavigatorWidget> {
30
30
31
31
@override
32
32
Widget build (BuildContext context) {
33
- return WillPopScope (
34
- onWillPop: _willPop,
35
- child: Navigator (
36
- key: navigationKey,
37
- initialRoute: HomeScreen .routeName,
38
- onGenerateRoute: onGenerateRoute,
39
- ),
33
+ return Navigator (
34
+ key: navigationKey,
35
+ initialRoute: HomeScreen .routeName,
36
+ onGenerateRoute: onGenerateRoute,
40
37
);
41
38
}
42
39
@@ -50,14 +47,6 @@ class MainNavigatorWidgetState extends State<MainNavigatorWidget> {
50
47
}
51
48
}
52
49
53
- Future <bool > _willPop () async {
54
- final currentState = navigationKey.currentState;
55
- if (currentState == null ) {
56
- return true ;
57
- }
58
- return ! await currentState.maybePop ();
59
- }
60
-
61
50
void closeDialog () => Navigator .of (context, rootNavigator: true ).pop ();
62
51
63
52
void goBack <T >({result}) => navigationKey.currentState? .pop (result);
Original file line number Diff line number Diff line change @@ -75,3 +75,12 @@ DoubleStatus:
75
75
status_3 :
76
76
properties :
77
77
value : 3.3
78
+
79
+ DuplicateEnum :
80
+ path : status
81
+ type : enum
82
+ values :
83
+ one : 1
84
+ two : 2
85
+ three : 3
86
+ # four: 3 # Duplicate value throws error
Original file line number Diff line number Diff line change @@ -226,6 +226,11 @@ class YmlGeneratorConfig {
226
226
);
227
227
}
228
228
229
+ _checkDuplicateEnumValue (
230
+ fields: fields,
231
+ enumName: key,
232
+ );
233
+
229
234
final enumModel = EnumModel (
230
235
addJsonValueToProperties: value['use_default_json_value' ] ?? true ,
231
236
generateExtension: value['generate_extension' ] == true ,
@@ -286,6 +291,24 @@ class YmlGeneratorConfig {
286
291
});
287
292
}
288
293
294
+ void _checkDuplicateEnumValue ({
295
+ required List <EnumField > fields,
296
+ required String enumName,
297
+ }) {
298
+ final seenKeys = < String > {};
299
+
300
+ for (final field in fields) {
301
+ final jsonValue = field.values
302
+ .firstWhereOrNull ((field) => field.propertyName == 'jsonValue' );
303
+ if (jsonValue == null ) continue ;
304
+ final key = '${jsonValue .value }-${jsonValue .propertyName }' ;
305
+ if (! seenKeys.add (key)) {
306
+ throw Exception (
307
+ 'Duplicate jsonValue ${jsonValue .value } found on field ${field .name } on enum $enumName ' );
308
+ }
309
+ }
310
+ }
311
+
289
312
Field getField (String name, YamlMap property,
290
313
{required bool disallowNullForDefaults}) {
291
314
try {
Original file line number Diff line number Diff line change @@ -388,6 +388,21 @@ Gender:
388
388
values:
389
389
MALE: 1
390
390
FEMALE: female
391
+ """ ,
392
+ ));
393
+
394
+ test (
395
+ 'Enum cant have duplicate json value' ,
396
+ () => testEnumError (
397
+ expectedError:
398
+ 'Exception: Duplicate jsonValue 1 found on field female on enum Gender' ,
399
+ enumYml: """
400
+ Gender:
401
+ path: user/person/
402
+ type: enum
403
+ values:
404
+ MALE: 1
405
+ FEMALE: 1
391
406
""" ,
392
407
));
393
408
});
You can’t perform that action at this time.
0 commit comments