-
Notifications
You must be signed in to change notification settings - Fork 4
/
utils.dart
77 lines (70 loc) · 2.04 KB
/
utils.dart
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:zeta_flutter/zeta_flutter.dart';
String iconLabelBuilder(int? codePoint) {
return icons.entries.firstWhere((element) => element.value.codePoint == codePoint).key.split('_').join(' ');
}
List<IconData> iconOptions() => icons.values
.map((e) => IconData(e.codePoint, fontFamily: ZetaIcons.family, fontPackage: ZetaIcons.package))
.toList();
String enumLabelBuilder(Enum? value) => value?.name.split('.').last.capitalize() ?? '';
IconData? iconKnob(
BuildContext context, {
bool nullable = false,
String name = 'Icon',
final IconData? initial,
}) {
return nullable
? context.knobs.listOrNull(
label: name,
options: iconOptions(),
labelBuilder: (value) => iconLabelBuilder(value?.codePoint),
initialOption: initial,
)
: context.knobs.list(
label: name,
options: iconOptions(),
labelBuilder: (value) => iconLabelBuilder(value?.codePoint),
initialOption: initial,
);
}
bool disabledKnob(BuildContext context) => context.knobs.boolean(
label: 'Disabled',
initialValue: false,
);
class RangeKnob extends Knob<RangeValues> {
RangeKnob({
required super.label,
required super.initialValue,
});
@override
List<Field> get fields => [
DoubleInputField(
name: 'min-$label',
initialValue: initialValue.start,
),
DoubleInputField(
name: 'max-$label',
initialValue: initialValue.end,
),
];
@override
RangeValues valueFromQueryGroup(Map<String, String> group) {
return RangeValues(
valueOf('min-$label', group)!,
valueOf('max-$label', group)!,
);
}
}
extension RangeKnobBuilder on KnobsBuilder {
RangeValues range({
required String label,
RangeValues initialValue = const RangeValues(0, 10),
}) =>
onKnobAdded(
RangeKnob(
label: label,
initialValue: initialValue,
),
)!;
}