1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51import 'package:alfred_workflow/src/models/alfred_user_configuration_config.dart';
import 'package:copy_with_extension/copy_with_extension.dart';
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:meta/meta.dart';
part 'alfred_user_configuration_config_select.g.dart';
/// Alfred user configuration select pair record
typedef AlfredUserConfigurationConfigSelectPair = ({
String label,
String value,
});
/// Alfred user configuration select class
@CopyWith()
@JsonSerializable(explicitToJson: true, createToJson: false)
final class AlfredUserConfigurationConfigSelect
extends AlfredUserConfigurationConfig<String>
with EquatableMixin {
const AlfredUserConfigurationConfigSelect({
required super.defaultValue,
required this.pairs,
super.value,
});
/// The pairs of labels and values
@JsonKey(fromJson: _pairsFromJson)
final List<AlfredUserConfigurationConfigSelectPair> pairs;
@internal
@override
AlfredUserConfigurationConfig<String> copyWithValue(String? value) =>
copyWith(value: value);
static List<AlfredUserConfigurationConfigSelectPair> _pairsFromJson(
List json,
) {
return [
for (final List pair in json)
(label: pair.first.toString(), value: pair.last.toString()),
];
}
factory AlfredUserConfigurationConfigSelect.fromJson(Map json) =>
_$AlfredUserConfigurationConfigSelectFromJson(
json.map((k, v) => MapEntry(k.toString(), v)),
);
}