|
@@ -1,12 +1,15 @@
|
|
|
|
+import 'dart:collection';
|
|
|
|
+
|
|
|
|
+import 'package:flutter/material.dart';
|
|
|
|
+import 'package:flutter/services.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/document/text_delta.dart';
|
|
|
|
+import 'package:flowy_editor/extensions/node_extensions.dart';
|
|
|
|
+import 'package:flowy_editor/extensions/path_extensions.dart';
|
|
import 'package:flowy_editor/operation/transaction_builder.dart';
|
|
import 'package:flowy_editor/operation/transaction_builder.dart';
|
|
|
|
+import 'package:flowy_editor/render/rich_text/rich_text_style.dart';
|
|
import 'package:flowy_editor/service/keyboard_service.dart';
|
|
import 'package:flowy_editor/service/keyboard_service.dart';
|
|
-import 'package:flowy_editor/extensions/path_extensions.dart';
|
|
|
|
-import 'package:flowy_editor/extensions/node_extensions.dart';
|
|
|
|
-import 'package:flutter/material.dart';
|
|
|
|
-import 'package:flutter/services.dart';
|
|
|
|
|
|
|
|
FlowyKeyEventHandler enterInEdgeOfTextNodeHandler = (editorState, event) {
|
|
FlowyKeyEventHandler enterInEdgeOfTextNodeHandler = (editorState, event) {
|
|
if (event.logicalKey != LogicalKeyboardKey.enter) {
|
|
if (event.logicalKey != LogicalKeyboardKey.enter) {
|
|
@@ -23,12 +26,19 @@ FlowyKeyEventHandler enterInEdgeOfTextNodeHandler = (editorState, event) {
|
|
}
|
|
}
|
|
|
|
|
|
final textNode = nodes.first as TextNode;
|
|
final textNode = nodes.first as TextNode;
|
|
-
|
|
|
|
if (textNode.selectable!.end() == selection.end) {
|
|
if (textNode.selectable!.end() == selection.end) {
|
|
|
|
+ final needCopyAttributes = StyleKey.globalStyleKeys
|
|
|
|
+ .where((key) => key != StyleKey.heading)
|
|
|
|
+ .contains(textNode.subtype);
|
|
TransactionBuilder(editorState)
|
|
TransactionBuilder(editorState)
|
|
..insertNode(
|
|
..insertNode(
|
|
textNode.path.next,
|
|
textNode.path.next,
|
|
- TextNode.empty(),
|
|
|
|
|
|
+ textNode.copyWith(
|
|
|
|
+ children: LinkedList(),
|
|
|
|
+ delta: Delta([TextInsert(' ')]),
|
|
|
|
+ attributes:
|
|
|
|
+ needCopyAttributes ? {StyleKey.subtype: textNode.subtype} : null,
|
|
|
|
+ ),
|
|
)
|
|
)
|
|
..commit();
|
|
..commit();
|
|
return KeyEventResult.handled;
|
|
return KeyEventResult.handled;
|
|
@@ -36,7 +46,11 @@ FlowyKeyEventHandler enterInEdgeOfTextNodeHandler = (editorState, event) {
|
|
TransactionBuilder(editorState)
|
|
TransactionBuilder(editorState)
|
|
..insertNode(
|
|
..insertNode(
|
|
textNode.path,
|
|
textNode.path,
|
|
- TextNode.empty(),
|
|
|
|
|
|
+ textNode.copyWith(
|
|
|
|
+ children: LinkedList(),
|
|
|
|
+ delta: Delta([TextInsert(' ')]),
|
|
|
|
+ attributes: {},
|
|
|
|
+ ),
|
|
)
|
|
)
|
|
..commit();
|
|
..commit();
|
|
return KeyEventResult.handled;
|
|
return KeyEventResult.handled;
|