ソースを参照

feat: update selection position after updating text node style.

Lucas.Xu 2 年 前
コミット
1166d03b75

+ 16 - 7
frontend/app_flowy/packages/flowy_editor/lib/service/default_text_operations/format_rich_text_style.dart

@@ -1,5 +1,7 @@
 import 'package:flowy_editor/document/attributes.dart';
 import 'package:flowy_editor/document/attributes.dart';
 import 'package:flowy_editor/document/node.dart';
 import 'package:flowy_editor/document/node.dart';
+import 'package:flowy_editor/document/position.dart';
+import 'package:flowy_editor/document/selection.dart';
 import 'package:flowy_editor/editor_state.dart';
 import 'package:flowy_editor/editor_state.dart';
 import 'package:flowy_editor/extensions/text_node_extensions.dart';
 import 'package:flowy_editor/extensions/text_node_extensions.dart';
 import 'package:flowy_editor/operation/transaction_builder.dart';
 import 'package:flowy_editor/operation/transaction_builder.dart';
@@ -46,13 +48,20 @@ bool formatTextNodes(EditorState editorState, Attributes attributes) {
   final builder = TransactionBuilder(editorState);
   final builder = TransactionBuilder(editorState);
 
 
   for (final textNode in textNodes) {
   for (final textNode in textNodes) {
-    builder.updateNode(
-      textNode,
-      Attributes.fromIterable(
-        StyleKey.globalStyleKeys,
-        value: (_) => null,
-      )..addAll(attributes),
-    );
+    builder
+      ..updateNode(
+        textNode,
+        Attributes.fromIterable(
+          StyleKey.globalStyleKeys,
+          value: (_) => null,
+        )..addAll(attributes),
+      )
+      ..afterSelection = Selection.collapsed(
+        Position(
+          path: textNode.path,
+          offset: textNode.toRawString().length,
+        ),
+      );
   }
   }
 
 
   builder.commit();
   builder.commit();