From b0d92d1d12811faef8ff6eb58370896f653cd34a Mon Sep 17 00:00:00 2001 From: AtlasAutocode Date: Mon, 8 Apr 2024 16:10:59 -0600 Subject: [PATCH] Fix FontFamily and Size button actions --- .../lib/screens/quill/my_quill_toolbar.dart | 10 ++-- .../toolbar/buttons/font_family_button.dart | 50 +++++++++++-------- .../toolbar/buttons/font_size_button.dart | 33 +++++++++++- 3 files changed, 66 insertions(+), 27 deletions(-) diff --git a/example/lib/screens/quill/my_quill_toolbar.dart b/example/lib/screens/quill/my_quill_toolbar.dart index 5acfb2de..8bb38c4d 100644 --- a/example/lib/screens/quill/my_quill_toolbar.dart +++ b/example/lib/screens/quill/my_quill_toolbar.dart @@ -223,9 +223,9 @@ class MyQuillToolbar extends StatelessWidget { '40': '40.0' }, // headerStyleType: HeaderStyleType.buttons, - // buttonOptions: QuillSimpleToolbarButtonOptions( - // base: QuillToolbarBaseButtonOptions( - // afterButtonPressed: focusNode.requestFocus, + buttonOptions: QuillSimpleToolbarButtonOptions( + base: QuillToolbarBaseButtonOptions( + afterButtonPressed: focusNode.requestFocus, // // iconSize: 20, // iconTheme: QuillIconTheme( // iconButtonSelectedData: IconButtonData( @@ -239,8 +239,8 @@ class MyQuillToolbar extends StatelessWidget { // ), // ), // ), - // ), - // ), + ), + ), customButtons: [ QuillToolbarCustomButtonOptions( icon: const Icon(Icons.add_alarm_rounded), diff --git a/lib/src/widgets/toolbar/buttons/font_family_button.dart b/lib/src/widgets/toolbar/buttons/font_family_button.dart index 01a2cb47..751b5294 100644 --- a/lib/src/widgets/toolbar/buttons/font_family_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_family_button.dart @@ -45,6 +45,8 @@ class QuillToolbarFontFamilyButtonState void initState() { super.initState(); _initState(); + controller + .addListener(_didChangeEditingValue); } void _initState() {} @@ -62,26 +64,32 @@ class QuillToolbarFontFamilyButtonState context.loc.font; } - // @override - // void didUpdateWidget(covariant QuillToolbarFontFamilyButton oldWidget) { - // super.didUpdateWidget(oldWidget); - // if (oldWidget.controller == controller) { - // return; - // } - // controller - // ..removeListener(_didChangeEditingValue) - // ..addListener(_didChangeEditingValue); - // } + @override + void didUpdateWidget(covariant QuillToolbarFontFamilyButton oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.controller == controller) { + return; + } + controller + ..removeListener(_didChangeEditingValue) + ..addListener(_didChangeEditingValue); + } - // void _didChangeEditingValue() { - // final attribute = _selectionStyle.attributes[options.attribute.key]; - // if (attribute == null) { - // setState(() => _currentValue = _defaultDisplayText); - // return; - // } - // final keyName = _getKeyName(attribute.value); - // setState(() => _currentValue = keyName ?? _defaultDisplayText); - // } + @override + void dispose() { + controller.removeListener(_didChangeEditingValue); + super.dispose(); + } + + void _didChangeEditingValue() { + final attribute = controller.getSelectionStyle().attributes[options.attribute.key]; + if (attribute == null) { + setState(() => _currentValue = _defaultDisplayText); + return; + } + final keyName = _getKeyName(attribute.value); + setState(() => _currentValue = keyName ?? _defaultDisplayText); + } Map get rawItemsMap { final rawItemsMap = @@ -142,7 +150,7 @@ class QuillToolbarFontFamilyButtonState } else { _menuController.open(); } - options.afterButtonPressed?.call(); + afterButtonPressed?.call(); } final _menuController = MenuController(); @@ -262,7 +270,7 @@ class QuillToolbarFontFamilyButtonState enabled: hasFinalWidth, wrapper: (child) => Expanded(child: child), child: Text( - widget.controller.selectedFontFamily?.key ?? _currentValue, + _currentValue, maxLines: 1, overflow: options.labelOverflow, style: options.style ?? diff --git a/lib/src/widgets/toolbar/buttons/font_size_button.dart b/lib/src/widgets/toolbar/buttons/font_size_button.dart index 1323c1d2..818d2e77 100644 --- a/lib/src/widgets/toolbar/buttons/font_size_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_size_button.dart @@ -72,17 +72,49 @@ class QuillToolbarFontSizeButtonState context.loc.fontSize; } + @override + void initState() { + super.initState(); + _initState(); + controller + .addListener(_didChangeEditingValue); + } + + void _initState() {} + @override void didChangeDependencies() { super.didChangeDependencies(); _currentValue = _defaultDisplayText; } + @override + void didUpdateWidget(covariant QuillToolbarFontSizeButton oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.controller == controller) { + return; + } + controller + ..removeListener(_didChangeEditingValue) + ..addListener(_didChangeEditingValue); + } + @override void dispose() { + controller.removeListener(_didChangeEditingValue); super.dispose(); } + void _didChangeEditingValue() { + final attribute = controller.getSelectionStyle().attributes[options.attribute.key]; + if (attribute == null) { + setState(() => _currentValue = _defaultDisplayText); + return; + } + final keyName = _getKeyName(attribute.value); + setState(() => _currentValue = keyName ?? _defaultDisplayText); + } + String? _getKeyName(dynamic value) { for (final entry in rawItemsMap.entries) { if (getFontSize(entry.value) == getFontSize(value)) { @@ -231,7 +263,6 @@ class QuillToolbarFontSizeButtonState enabled: hasFinalWidth, wrapper: (child) => Expanded(child: child), child: Text( - getLabel(widget.controller.selectedFontSize?.key) ?? getLabel(_currentValue) ?? '', overflow: options.labelOverflow,