From c89779b4a6758b38290924b4d329151589d7b8ff Mon Sep 17 00:00:00 2001 From: X Code Date: Sat, 22 Jan 2022 02:42:22 -0800 Subject: [PATCH] [3.5.3] Change link button behavior --- CHANGELOG.md | 3 +++ lib/src/translations/toolbar.i18n.dart | 14 ++++++++++++++ lib/src/widgets/toolbar/link_dialog.dart | 2 +- lib/src/widgets/toolbar/link_style_button.dart | 18 +++++++++++------- pubspec.yaml | 2 +- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9cdfdf8..10d07199 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# [3.5.3] +* Change link button behavior. + # [3.5.2] * Bug fix for embed. diff --git a/lib/src/translations/toolbar.i18n.dart b/lib/src/translations/toolbar.i18n.dart index c64f318e..0f735e78 100644 --- a/lib/src/translations/toolbar.i18n.dart +++ b/lib/src/translations/toolbar.i18n.dart @@ -17,6 +17,7 @@ extension Localization on String { 'Save': 'Save', 'Zoom': 'Zoom', 'Saved': 'Saved', + 'Text': 'Text', }, 'ar': { 'Paste a link': 'نسخ الرابط', @@ -32,6 +33,7 @@ extension Localization on String { 'Save': 'يحفظ', 'Zoom': 'تكبير', 'Saved': 'أنقذ', + 'Text': 'Text', }, 'da': { 'Paste a link': 'Indsæt link', @@ -47,6 +49,7 @@ extension Localization on String { 'Save': 'Gemme', 'Zoom': 'Zoom ind', 'Saved': 'Gemt', + 'Text': 'Text', }, 'de': { 'Paste a link': 'Link hinzufügen', @@ -63,6 +66,7 @@ extension Localization on String { 'Save': 'Speichern', 'Zoom': 'Zoomen', 'Saved': 'Gerettet', + 'Text': 'Text', }, 'fr': { 'Paste a link': 'Coller un lien', @@ -78,6 +82,7 @@ extension Localization on String { 'Save': 'Sauvegarder', 'Zoom': 'Zoom', 'Saved': 'Enregistrée', + 'Text': 'Text', }, 'zh_CN': { 'Paste a link': '粘贴链接', @@ -93,6 +98,7 @@ extension Localization on String { 'Save': '保存', 'Zoom': '放大', 'Saved': '已保存', + 'Text': '文字', }, 'ko': { 'Paste a link': '링크를 붙여넣어 주세요.', @@ -108,6 +114,7 @@ extension Localization on String { 'Save': '저장하기', 'Zoom': '확대하기', 'Saved': '저장되었습니다.', + 'Text': 'Text', }, 'ru': { 'Paste a link': 'Вставить ссылку', @@ -123,6 +130,7 @@ extension Localization on String { 'Save': 'Сохранять', 'Zoom': 'Увеличить', 'Saved': 'Сохранено', + 'Text': 'Text', }, 'es': { 'Paste a link': 'Pega un enlace', @@ -139,6 +147,7 @@ extension Localization on String { 'Save': 'Ahorrar', 'Zoom': 'Zoom', 'Saved': 'Salvado', + 'Text': 'Text', }, 'tr': { 'Paste a link': 'Bağlantıyı Yapıştır', @@ -154,6 +163,7 @@ extension Localization on String { 'Save': 'Kayıt etmek', 'Zoom': 'yakınlaştır', 'Saved': 'kaydedildi', + 'Text': 'Text', }, 'uk': { 'Paste a link': 'Вставити посилання', @@ -169,6 +179,7 @@ extension Localization on String { 'Save': 'Зберегти', 'Zoom': 'Збільшити', 'Saved': 'Збережено', + 'Text': 'Text', }, 'pt': { 'Paste a link': 'Colar um link', @@ -185,6 +196,7 @@ extension Localization on String { 'Save': 'Salve', 'Zoom': 'Ampliação', 'Saved': 'Salvou', + 'Text': 'Text', }, 'pl': { 'Paste a link': 'Wklej link', @@ -200,6 +212,7 @@ extension Localization on String { 'Save': 'Zapisać', 'Zoom': 'Powiększenie', 'Saved': 'Zapisane', + 'Text': 'Text', }, 'vi': { 'Paste a link': 'Chèn liên kết', @@ -215,6 +228,7 @@ extension Localization on String { 'Save': 'Lưu', 'Zoom': 'Thu phóng', 'Saved': 'Đã lưu', + 'Text': 'Text', }, }; diff --git a/lib/src/widgets/toolbar/link_dialog.dart b/lib/src/widgets/toolbar/link_dialog.dart index cd1f1370..ff13908e 100644 --- a/lib/src/widgets/toolbar/link_dialog.dart +++ b/lib/src/widgets/toolbar/link_dialog.dart @@ -31,7 +31,7 @@ class LinkDialogState extends State { content: TextField( style: widget.dialogTheme?.inputTextStyle, decoration: InputDecoration( - labelText: 'Paste a link'.i18n, + labelText: 'Link'.i18n, labelStyle: widget.dialogTheme?.labelTextStyle, floatingLabelStyle: widget.dialogTheme?.labelTextStyle), autofocus: true, diff --git a/lib/src/widgets/toolbar/link_style_button.dart b/lib/src/widgets/toolbar/link_style_button.dart index 8eea4b89..59ef3114 100644 --- a/lib/src/widgets/toolbar/link_style_button.dart +++ b/lib/src/widgets/toolbar/link_style_button.dart @@ -59,8 +59,8 @@ class _LinkStyleButtonState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - final isEnabled = !widget.controller.selection.isCollapsed; - final pressedHandler = isEnabled ? () => _openLinkDialog(context) : null; + final isToggled = _getLinkAttributeValue() != null; + final pressedHandler = () => _openLinkDialog(context); return GestureDetector( onTap: () async { final dynamic tooltip = _toolTipKey.currentState; @@ -82,7 +82,7 @@ class _LinkStyleButtonState extends State { icon: Icon( widget.icon ?? Icons.link, size: widget.iconSize, - color: isEnabled + color: isToggled ? (widget.iconTheme?.iconUnselectedColor ?? theme.iconTheme.color) : (widget.iconTheme?.disabledIconColor ?? theme.disabledColor), @@ -99,15 +99,19 @@ class _LinkStyleButtonState extends State { showDialog( context: context, builder: (ctx) { - final link = widget.controller - .getSelectionStyle() - .attributes[Attribute.link.key] - ?.value; + final link = _getLinkAttributeValue(); return LinkDialog(dialogTheme: widget.dialogTheme, link: link); }, ).then(_linkSubmitted); } + String? _getLinkAttributeValue() { + return widget.controller + .getSelectionStyle() + .attributes[Attribute.link.key] + ?.value; + } + void _linkSubmitted(String? value) { if (value == null || value.isEmpty) { return; diff --git a/pubspec.yaml b/pubspec.yaml index 0c1e73f5..9c5beae2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_quill description: A rich text editor supporting mobile and web (Demo App @ bulletjournal.us) -version: 3.5.2 +version: 3.5.3 #author: bulletjournal homepage: https://bulletjournal.us/home/index.html repository: https://github.com/singerdmx/flutter-quill