Skip to content

Commit 2815833

Browse files
committed
Simplify class QuillFontSizeButton
1 parent fb0be15 commit 2815833

File tree

3 files changed

+37
-35
lines changed

3 files changed

+37
-35
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ To add an Icon, we should use a new QuillCustomIcon class
100100
```
101101
QuillCustomIcon(
102102
icon:Icons.ac_unit,
103-
onTap: (){
103+
onTap: () {
104104
debugPrint('snowflake');
105105
}
106106
),
@@ -113,21 +113,21 @@ QuillToolbar.basic(
113113
customIcons: [
114114
QuillCustomIcon(
115115
icon:Icons.ac_unit,
116-
onTap: (){
116+
onTap: () {
117117
debugPrint('snowflake1');
118118
}
119119
),
120120
121121
QuillCustomIcon(
122122
icon:Icons.ac_unit,
123-
onTap: (){
123+
onTap: () {
124124
debugPrint('snowflake2');
125125
}
126126
),
127127
128128
QuillCustomIcon(
129129
icon:Icons.ac_unit,
130-
onTap: (){
130+
onTap: () {
131131
debugPrint('snowflake3');
132132
}
133133
),

lib/src/widgets/toolbar.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,8 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
198198
),
199199
],
200200
onSelected: (newSize) {
201-
if (newSize != null) {
202-
controller.formatSelection(
203-
Attribute.fromKeyValue('size', getFontSize(newSize)));
204-
}
201+
controller.formatSelection(
202+
Attribute.fromKeyValue('size', getFontSize(newSize)));
205203
},
206204
rawItemsMap: fontSizes,
207205
),

lib/src/widgets/toolbar/quill_font_size_button.dart

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import '../../models/themes/quill_icon_theme.dart';
66
import '../../utils/font.dart';
77
import '../controller.dart';
88

9-
class QuillFontSizeButton<T> extends StatefulWidget {
9+
class QuillFontSizeButton extends StatefulWidget {
1010
const QuillFontSizeButton({
1111
required this.items,
1212
required this.rawItemsMap,
@@ -25,18 +25,18 @@ class QuillFontSizeButton<T> extends StatefulWidget {
2525
final Color? fillColor;
2626
final double hoverElevation;
2727
final double highlightElevation;
28-
final List<PopupMenuEntry<T>> items;
28+
final List<PopupMenuEntry<String>> items;
2929
final Map<String, String> rawItemsMap;
30-
final ValueChanged<T> onSelected;
30+
final ValueChanged<String> onSelected;
3131
final QuillIconTheme? iconTheme;
3232
final Attribute attribute;
3333
final QuillController controller;
3434

3535
@override
36-
_QuillFontSizeButtonState<T> createState() => _QuillFontSizeButtonState<T>();
36+
_QuillFontSizeButtonState createState() => _QuillFontSizeButtonState();
3737
}
3838

39-
class _QuillFontSizeButtonState<T> extends State<QuillFontSizeButton<T>> {
39+
class _QuillFontSizeButtonState extends State<QuillFontSizeButton> {
4040
static const defaultDisplayText = 'Size';
4141
String _currentValue = defaultDisplayText;
4242
Style get _selectionStyle => widget.controller.getSelectionStyle();
@@ -54,7 +54,7 @@ class _QuillFontSizeButtonState<T> extends State<QuillFontSizeButton<T>> {
5454
}
5555

5656
@override
57-
void didUpdateWidget(covariant QuillFontSizeButton<T> oldWidget) {
57+
void didUpdateWidget(covariant QuillFontSizeButton oldWidget) {
5858
super.didUpdateWidget(oldWidget);
5959
if (oldWidget.controller != widget.controller) {
6060
oldWidget.controller.removeListener(_didChangeEditingValue);
@@ -63,24 +63,27 @@ class _QuillFontSizeButtonState<T> extends State<QuillFontSizeButton<T>> {
6363
}
6464

6565
void _didChangeEditingValue() {
66-
setState(() => _currentValue = _getKeyName(_selectionStyle.attributes));
67-
}
68-
69-
String _getKeyName(Map<String, Attribute> attrs) {
7066
if (widget.attribute.key != Attribute.size.key) {
71-
return defaultDisplayText;
67+
return;
7268
}
73-
final attribute = attrs[widget.attribute.key];
74-
69+
final attribute = _selectionStyle.attributes[widget.attribute.key];
7570
if (attribute == null) {
76-
return defaultDisplayText;
71+
return;
7772
}
78-
return widget.rawItemsMap.entries
79-
.firstWhere(
80-
(element) =>
81-
getFontSize(element.value) == getFontSize(attribute.value),
82-
orElse: () => widget.rawItemsMap.entries.first)
83-
.key;
73+
final keyName = _getKeyName(attribute.value);
74+
if (keyName == null) {
75+
return;
76+
}
77+
setState(() => _currentValue = keyName);
78+
}
79+
80+
String? _getKeyName(dynamic value) {
81+
for (final entry in widget.rawItemsMap.entries) {
82+
if (getFontSize(entry.value) == getFontSize(value)) {
83+
return entry.key;
84+
}
85+
}
86+
return null;
8487
}
8588

8689
@override
@@ -115,23 +118,24 @@ class _QuillFontSizeButtonState<T> extends State<QuillFontSizeButton<T>> {
115118
),
116119
Offset.zero & overlay.size,
117120
);
118-
showMenu<T>(
121+
showMenu<String>(
119122
context: context,
120123
elevation: 4,
121124
items: widget.items,
122125
position: position,
123126
shape: popupMenuTheme.shape,
124127
color: popupMenuTheme.color,
125128
).then((newValue) {
126-
if (!mounted) return null;
129+
if (!mounted) return;
127130
if (newValue == null) {
128-
return null;
131+
return;
132+
}
133+
final keyName = _getKeyName(newValue);
134+
if (keyName == null) {
135+
return;
129136
}
130137
setState(() {
131-
_currentValue = widget.rawItemsMap.entries
132-
.firstWhere((element) => element.value == newValue,
133-
orElse: () => widget.rawItemsMap.entries.first)
134-
.key;
138+
_currentValue = keyName;
135139
widget.onSelected(newValue);
136140
});
137141
});

0 commit comments

Comments
 (0)