[PR #2118] [CLOSED] feat: optimize editor performance of selection service and scroll service. #5105

Closed
opened 2026-03-23 22:17:16 +00:00 by mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/AppFlowy-IO/AppFlowy/pull/2118
Author: @LucasXu0
Created: 3/27/2023
Status: Closed

Base: mainHead: appflowy_editor_v2


📝 Commits (10+)

  • 11fa475 feat: optimize editor performance of selection service and scroll service
  • 01778bb feat: optimize the selection service
  • 35c0961 feat: integrate auto scroller
  • 38083ff fix: backspace handler
  • f0099fc feat: implement text block
  • d64128c feat: integrate delta input service into text block
  • d7c32cb feat: implement a bulleted list block
  • cdcb57c feat: implement a nested list block
  • c77ca56 feat: support editing text in text block
  • 34b47ac feat: support shortcuts for block component

📊 Changes

58 files changed (+2880 additions, -217 deletions)

View changed files

📝 frontend/appflowy_flutter/packages/appflowy_editor/example/assets/example.json (+176 -65)
📝 frontend/appflowy_flutter/packages/appflowy_editor/example/lib/pages/simple_editor.dart (+37 -37)
📝 frontend/appflowy_flutter/packages/appflowy_editor/lib/appflowy_editor.dart (+2 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/infra/text_block_infra.dart (+44 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/input/input_service.dart (+155 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/selectable/text_selectable_state_mixin.dart (+22 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/shortcuts/block_shortcut.dart (+7 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/shortcuts/shortcut_service.dart (+70 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/shortcuts/text_block_shortcut.dart (+7 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/widget/full_screen_overlay.dart (+34 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/widget/nested_list.dart (+84 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/widget/rich_text_with_selection.dart (+184 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/bullet_list_block/bulleted_list_block.dart (+67 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/bullet_list_block/bulleted_list_node_widget_builder.dart (+18 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/checkbox_list_block/checkbox_block.dart (+76 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/checkbox_list_block/checkbox_node_widget_builder.dart (+18 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/heading_block.dart/heading_block.dart (+51 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/heading_block.dart/heading_node_widget_builder.dart (+18 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/numbered_list_block/numbered_list_block.dart (+57 -0)
frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/numbered_list_block/numbered_list_node_widget.builder.dart (+18 -0)

...and 38 more files

📄 Description

Rendering

  • Replace the layout from Column with ListView. Only render the visible node displayed on the current screen.

Selection service

  • Only search selection from the visible node.
  • Migrate the function of rendering the selection area and cursor to each selectable node.

scroll service,

  • Using the built-in scrollable from ListView.
  • Using the EdgeDraggingAutoScroller to optimize the scroll event.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/AppFlowy-IO/AppFlowy/pull/2118 **Author:** [@LucasXu0](https://github.com/LucasXu0) **Created:** 3/27/2023 **Status:** ❌ Closed **Base:** `main` ← **Head:** `appflowy_editor_v2` --- ### 📝 Commits (10+) - [`11fa475`](https://github.com/AppFlowy-IO/AppFlowy/commit/11fa475b9a13abc60b0c2b2198b61313d06a7733) feat: optimize editor performance of selection service and scroll service - [`01778bb`](https://github.com/AppFlowy-IO/AppFlowy/commit/01778bb26d80bde486a87848ee337033e64d08ac) feat: optimize the selection service - [`35c0961`](https://github.com/AppFlowy-IO/AppFlowy/commit/35c096119708ce737d992bca84019b6a8fa93600) feat: integrate auto scroller - [`38083ff`](https://github.com/AppFlowy-IO/AppFlowy/commit/38083ff3d3dbe579f672181b3cb641cbf21f5974) fix: backspace handler - [`f0099fc`](https://github.com/AppFlowy-IO/AppFlowy/commit/f0099fcbea64e1f6a4c139f374df80c27401de83) feat: implement text block - [`d64128c`](https://github.com/AppFlowy-IO/AppFlowy/commit/d64128c4cdabab140456eeec77fd0dccc6c9d2df) feat: integrate delta input service into text block - [`d7c32cb`](https://github.com/AppFlowy-IO/AppFlowy/commit/d7c32cbe9dba015ea54dbe179903df052022d18b) feat: implement a bulleted list block - [`cdcb57c`](https://github.com/AppFlowy-IO/AppFlowy/commit/cdcb57cc0eeab684dd44b88d0a63dc6f162e0d3f) feat: implement a nested list block - [`c77ca56`](https://github.com/AppFlowy-IO/AppFlowy/commit/c77ca569b8619c5c612c156a47ecca6b98f9a3d9) feat: support editing text in text block - [`34b47ac`](https://github.com/AppFlowy-IO/AppFlowy/commit/34b47ac2823e9713a24440c2b6c2a5cbeb0dda5c) feat: support shortcuts for block component ### 📊 Changes **58 files changed** (+2880 additions, -217 deletions) <details> <summary>View changed files</summary> 📝 `frontend/appflowy_flutter/packages/appflowy_editor/example/assets/example.json` (+176 -65) 📝 `frontend/appflowy_flutter/packages/appflowy_editor/example/lib/pages/simple_editor.dart` (+37 -37) 📝 `frontend/appflowy_flutter/packages/appflowy_editor/lib/appflowy_editor.dart` (+2 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/infra/text_block_infra.dart` (+44 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/input/input_service.dart` (+155 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/selectable/text_selectable_state_mixin.dart` (+22 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/shortcuts/block_shortcut.dart` (+7 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/shortcuts/shortcut_service.dart` (+70 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/shortcuts/text_block_shortcut.dart` (+7 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/widget/full_screen_overlay.dart` (+34 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/widget/nested_list.dart` (+84 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/base_component/widget/rich_text_with_selection.dart` (+184 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/bullet_list_block/bulleted_list_block.dart` (+67 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/bullet_list_block/bulleted_list_node_widget_builder.dart` (+18 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/checkbox_list_block/checkbox_block.dart` (+76 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/checkbox_list_block/checkbox_node_widget_builder.dart` (+18 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/heading_block.dart/heading_block.dart` (+51 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/heading_block.dart/heading_node_widget_builder.dart` (+18 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/numbered_list_block/numbered_list_block.dart` (+57 -0) ➕ `frontend/appflowy_flutter/packages/appflowy_editor/lib/src/block/numbered_list_block/numbered_list_node_widget.builder.dart` (+18 -0) _...and 38 more files_ </details> ### 📄 Description ## Rendering * Replace the layout from `Column` with `ListView`. Only render the visible node displayed on the current screen. ## Selection service * Only search selection from the visible node. * Migrate the function of rendering the selection area and cursor to each selectable node. ## scroll service, * Using the built-in scrollable from `ListView`. * Using the `EdgeDraggingAutoScroller` to optimize the scroll event. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror 2026-03-23 22:17:16 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AppFlowy-IO/AppFlowy#5105
No description provided.