@@ -50,27 +50,41 @@ class _BadgeScanSettingsWidgetState extends State<BadgeScanSettingsWidget> {
50
50
void _onSave () {
51
51
final updatedNames = < String > [];
52
52
final Map <String , String > aliases = {};
53
+ final Set <String > realNameSet = {};
54
+ final Set <String > aliasSet = {};
53
55
54
56
for (int i = 0 ; i < _nameControllers.length; i++ ) {
55
57
final name = _nameControllers[i].text.trim ();
56
58
final alias = _aliasControllers[i].text.trim ();
59
+
57
60
if (name.isNotEmpty) {
61
+ if (realNameSet.contains (name.toLowerCase ())) {
62
+ ScaffoldMessenger .of (context).showSnackBar (
63
+ SnackBar (content: Text ('Duplicate real badge name: "$name "' )),
64
+ );
65
+ return ;
66
+ }
67
+ realNameSet.add (name.toLowerCase ());
58
68
updatedNames.add (name);
69
+
59
70
if (alias.isNotEmpty) {
71
+ if (aliasSet.contains (alias.toLowerCase ())) {
72
+ ScaffoldMessenger .of (context).showSnackBar (
73
+ SnackBar (content: Text ('Duplicate alias: "$alias "' )),
74
+ );
75
+ return ;
76
+ }
77
+ aliasSet.add (alias.toLowerCase ());
60
78
aliases[name] = alias;
61
79
}
62
80
}
63
81
}
64
-
65
- // Save mode and names
66
82
final scanProvider = Provider .of <BadgeScanProvider >(context, listen: false );
67
83
scanProvider.setMode (_mode);
68
84
scanProvider.setBadgeNames (updatedNames);
69
-
70
- // Save aliases
71
85
final aliasProvider =
72
86
Provider .of <BadgeAliasProvider >(context, listen: false );
73
- aliasProvider.clearAll (); // optional: reset aliases
87
+ aliasProvider.clearAll ();
74
88
aliases.forEach ((name, alias) => aliasProvider.setAlias (name, alias));
75
89
76
90
ScaffoldMessenger .of (context).showSnackBar (
0 commit comments