From 15ff2efcc21ec5f95c8c47d584ef8c5e3bb22e92 Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Fri, 2 Sep 2022 10:17:36 +0800 Subject: [PATCH] Fix analysis issues (#966) * chore: rename Selectable to SelectableMixin * chore: add platforms to pubspec.yaml --- .../example/lib/plugin/image_node_widget.dart | 5 +++-- .../example/lib/plugin/network_image_node_widget.dart | 2 +- .../example/lib/plugin/youtube_link_node_widget.dart | 2 +- .../appflowy_editor/lib/src/document/node_iterator.dart | 1 - .../appflowy_editor/lib/src/document/text_delta.dart | 1 - .../appflowy_editor/lib/src/extensions/node_extensions.dart | 3 ++- .../lib/src/render/image/image_node_widget.dart | 3 ++- .../lib/src/render/rich_text/bulleted_list_text.dart | 6 +++--- .../lib/src/render/rich_text/checkbox_text.dart | 6 +++--- .../lib/src/render/rich_text/default_selectable.dart | 2 +- .../lib/src/render/rich_text/flowy_rich_text.dart | 2 +- .../lib/src/render/rich_text/heading_text.dart | 6 +++--- .../lib/src/render/rich_text/number_list_text.dart | 6 +++--- .../lib/src/render/rich_text/quoted_text.dart | 6 +++--- .../appflowy_editor/lib/src/render/rich_text/rich_text.dart | 6 +++--- .../lib/src/render/selection/selectable.dart | 6 +++--- .../appflowy_editor/lib/src/service/selection_service.dart | 2 +- frontend/app_flowy/packages/appflowy_editor/pubspec.yaml | 5 +++++ 18 files changed, 38 insertions(+), 32 deletions(-) diff --git a/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/image_node_widget.dart b/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/image_node_widget.dart index c535bc6295..d76ce8d6a2 100644 --- a/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/image_node_widget.dart +++ b/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/image_node_widget.dart @@ -11,7 +11,7 @@ import 'package:flutter/material.dart'; /// 2. create a class extends [NodeWidgetBuilder] /// 3. override the function `Widget build(NodeWidgetContext context)` /// and return a widget to render. The returned widget should be -/// a StatefulWidget and mixin with [Selectable]. +/// a StatefulWidget and mixin with [SelectableMixin]. /// /// 4. override the getter `nodeValidator` /// to verify the data structure in [Node]. @@ -50,7 +50,8 @@ class ImageNodeWidget extends StatefulWidget { State createState() => _ImageNodeWidgetState(); } -class _ImageNodeWidgetState extends State with Selectable { +class _ImageNodeWidgetState extends State + with SelectableMixin { bool isHovered = false; Node get node => widget.node; EditorState get editorState => widget.editorState; diff --git a/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/network_image_node_widget.dart b/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/network_image_node_widget.dart index 84d2e72918..395fc175f4 100644 --- a/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/network_image_node_widget.dart +++ b/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/network_image_node_widget.dart @@ -31,7 +31,7 @@ class _NetworkImageNodeWidget extends StatefulWidget { } class __NetworkImageNodeWidgetState extends State<_NetworkImageNodeWidget> - with Selectable { + with SelectableMixin { RenderBox get _renderBox => context.findRenderObject() as RenderBox; @override diff --git a/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/youtube_link_node_widget.dart b/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/youtube_link_node_widget.dart index 27bbe922e3..3923c60c45 100644 --- a/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/youtube_link_node_widget.dart +++ b/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/youtube_link_node_widget.dart @@ -33,7 +33,7 @@ class LinkNodeWidget extends StatefulWidget { } class _YouTubeLinkNodeWidgetState extends State - with Selectable { + with SelectableMixin { Node get node => widget.node; EditorState get editorState => widget.editorState; String get src => widget.node.attributes['youtube_link'] as String; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node_iterator.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node_iterator.dart index 9c666bdfea..ccae0f43d1 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node_iterator.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node_iterator.dart @@ -1,7 +1,6 @@ import 'package:appflowy_editor/src/document/node.dart'; import './state_tree.dart'; -import './node.dart'; /// [NodeIterator] is used to traverse the nodes in visual order. class NodeIterator implements Iterator { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/text_delta.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/text_delta.dart index 2e6fa82437..fef58ed08c 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/text_delta.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/text_delta.dart @@ -4,7 +4,6 @@ import 'dart:math'; import 'package:appflowy_editor/src/document/attributes.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import './attributes.dart'; // constant number: 2^53 - 1 const int _maxInt = 9007199254740991; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/node_extensions.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/node_extensions.dart index 5df8665a6b..dffca3eaf0 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/node_extensions.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/node_extensions.dart @@ -10,7 +10,8 @@ extension NodeExtensions on Node { key?.currentContext?.findRenderObject()?.unwrapOrNull(); BuildContext? get context => key?.currentContext; - Selectable? get selectable => key?.currentState?.unwrapOrNull(); + SelectableMixin? get selectable => + key?.currentState?.unwrapOrNull(); bool inSelection(Selection selection) { if (selection.start.path <= selection.end.path) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart index a65df11541..c720231f6e 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart @@ -32,7 +32,8 @@ class ImageNodeWidget extends StatefulWidget { State createState() => _ImageNodeWidgetState(); } -class _ImageNodeWidgetState extends State with Selectable { +class _ImageNodeWidgetState extends State + with SelectableMixin { final _imageKey = GlobalKey(); double? _imageWidth; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart index 7f0f0363f8..58c86e7670 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart @@ -42,7 +42,7 @@ class BulletedListTextNodeWidget extends StatefulWidget { // customize class _BulletedListTextNodeWidgetState extends State - with Selectable, DefaultSelectable { + with SelectableMixin, DefaultSelectable { @override final iconKey = GlobalKey(); @@ -51,8 +51,8 @@ class _BulletedListTextNodeWidgetState extends State final _iconRightPadding = 5.0; @override - Selectable get forward => - _richTextKey.currentState as Selectable; + SelectableMixin get forward => + _richTextKey.currentState as SelectableMixin; @override Widget build(BuildContext context) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart index ed6748a43e..d6458304d6 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart @@ -40,7 +40,7 @@ class CheckboxNodeWidget extends StatefulWidget { } class _CheckboxNodeWidgetState extends State - with Selectable, DefaultSelectable { + with SelectableMixin, DefaultSelectable { @override final iconKey = GlobalKey(); @@ -49,8 +49,8 @@ class _CheckboxNodeWidgetState extends State final _iconRightPadding = 5.0; @override - Selectable get forward => - _richTextKey.currentState as Selectable; + SelectableMixin get forward => + _richTextKey.currentState as SelectableMixin; @override Widget build(BuildContext context) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/default_selectable.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/default_selectable.dart index c477478deb..fd86f84831 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/default_selectable.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/default_selectable.dart @@ -4,7 +4,7 @@ import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:flutter/material.dart'; mixin DefaultSelectable { - Selectable get forward; + SelectableMixin get forward; GlobalKey? get iconKey; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart index 9d1b7f119e..9292c1e5cd 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart @@ -42,7 +42,7 @@ class FlowyRichText extends StatefulWidget { State createState() => _FlowyRichTextState(); } -class _FlowyRichTextState extends State with Selectable { +class _FlowyRichTextState extends State with SelectableMixin { var _textKey = GlobalKey(); final _placeholderTextKey = GlobalKey(); diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart index 93defaae8e..d58030ef15 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart @@ -39,7 +39,7 @@ class HeadingTextNodeWidget extends StatefulWidget { // customize class _HeadingTextNodeWidgetState extends State - with Selectable, DefaultSelectable { + with SelectableMixin, DefaultSelectable { @override GlobalKey? get iconKey => null; @@ -47,8 +47,8 @@ class _HeadingTextNodeWidgetState extends State final _topPadding = 5.0; @override - Selectable get forward => - _richTextKey.currentState as Selectable; + SelectableMixin get forward => + _richTextKey.currentState as SelectableMixin; @override Offset get baseOffset { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart index 36cf91bdce..36d3d93ed9 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart @@ -42,7 +42,7 @@ class NumberListTextNodeWidget extends StatefulWidget { // customize class _NumberListTextNodeWidgetState extends State - with Selectable, DefaultSelectable { + with SelectableMixin, DefaultSelectable { @override final iconKey = GlobalKey(); @@ -51,8 +51,8 @@ class _NumberListTextNodeWidgetState extends State final _iconRightPadding = 5.0; @override - Selectable get forward => - _richTextKey.currentState as Selectable; + SelectableMixin get forward => + _richTextKey.currentState as SelectableMixin; @override Widget build(BuildContext context) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart index 9c2366d1cb..9e36acfad0 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart @@ -41,7 +41,7 @@ class QuotedTextNodeWidget extends StatefulWidget { // customize class _QuotedTextNodeWidgetState extends State - with Selectable, DefaultSelectable { + with SelectableMixin, DefaultSelectable { @override final iconKey = GlobalKey(); @@ -50,8 +50,8 @@ class _QuotedTextNodeWidgetState extends State final _iconRightPadding = 5.0; @override - Selectable get forward => - _richTextKey.currentState as Selectable; + SelectableMixin get forward => + _richTextKey.currentState as SelectableMixin; @override Widget build(BuildContext context) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart index b9a3e2f314..a00e1d7c14 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart @@ -40,15 +40,15 @@ class RichTextNodeWidget extends StatefulWidget { // customize class _RichTextNodeWidgetState extends State - with Selectable, DefaultSelectable { + with SelectableMixin, DefaultSelectable { @override GlobalKey? get iconKey => null; final _richTextKey = GlobalKey(debugLabel: 'rich_text'); @override - Selectable get forward => - _richTextKey.currentState as Selectable; + SelectableMixin get forward => + _richTextKey.currentState as SelectableMixin; @override Widget build(BuildContext context) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection/selectable.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection/selectable.dart index 434b4b67b1..372dbd7067 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection/selectable.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection/selectable.dart @@ -2,12 +2,12 @@ import 'package:appflowy_editor/src/document/position.dart'; import 'package:appflowy_editor/src/document/selection.dart'; import 'package:flutter/material.dart'; -/// [Selectable] is used for the editor to calculate the position +/// [SelectableMixin] is used for the editor to calculate the position /// and size of the selection. /// -/// The widget returned by NodeWidgetBuilder must be with [Selectable], +/// The widget returned by NodeWidgetBuilder must be with [SelectableMixin], /// otherwise the [AppFlowySelectionService] will not work properly. -mixin Selectable on State { +mixin SelectableMixin on State { /// Returns the [Selection] surrounded by start and end /// in current widget. /// diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart index ca442f4ff9..ef3b501a5b 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart @@ -510,7 +510,7 @@ class _AppFlowySelectionState extends State editorState.service.scrollService?.enable(); } - Rect _transformRectToGlobal(Selectable selectable, Rect r) { + Rect _transformRectToGlobal(SelectableMixin selectable, Rect r) { final Offset topLeft = selectable.localToGlobal(Offset(r.left, r.top)); return Rect.fromLTWH(topLeft.dx, topLeft.dy, r.width, r.height); } diff --git a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml index 295a45ad8c..107ba54dba 100644 --- a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml +++ b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml @@ -3,6 +3,11 @@ description: A highly customizable rich-text editor for Flutter version: 0.0.3 homepage: https://github.com/AppFlowy-IO/AppFlowy +platforms: + linux: + macos: + windows: + environment: sdk: ">=2.17.0 <3.0.0" flutter: ">=1.17.0"