_updateSizeAndTransform() for openConnectionIfNeeded

pull/602/head
X Code 3 years ago
parent 90b6000da7
commit ee1092f050
  1. 2
      lib/src/models/documents/nodes/leaf.dart
  2. 19
      lib/src/widgets/raw_editor/raw_editor_state_text_input_client_mixin.dart

@ -252,7 +252,7 @@ class Embed extends Leaf {
@override
Embeddable get value => super.value as Embeddable;
/// // Embed nodes are represented as unicode object replacement character in
// Embed nodes are represented as unicode object replacement character in
// plain text.
@override
String toPlainText() => kObjectReplacementCharacter;

@ -2,6 +2,7 @@ import 'dart:ui';
import 'package:flutter/animation.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import '../../models/documents/document.dart';
@ -61,8 +62,8 @@ mixin RawEditorStateTextInputClientMixin on EditorState
),
);
_updateSizeAndTransform();
_textInputConnection!.setEditingState(_lastKnownRemoteTextEditingValue!);
// _sentRemoteValues.add(_lastKnownRemoteTextEditingValue);
}
_textInputConnection!.show();
@ -111,6 +112,7 @@ mixin RawEditorStateTextInputClientMixin on EditorState
);
}
// Start TextInputClient implementation
@override
TextEditingValue? get currentTextEditingValue =>
_lastKnownRemoteTextEditingValue;
@ -293,4 +295,19 @@ mixin RawEditorStateTextInputClientMixin on EditorState
_textInputConnection = null;
_lastKnownRemoteTextEditingValue = null;
}
void _updateSizeAndTransform() {
if (hasConnection) {
// Asking for renderEditor.size here can cause errors if layout hasn't
// occurred yet. So we schedule a post frame callback instead.
SchedulerBinding.instance!.addPostFrameCallback((_) {
if (!mounted) {
return;
}
final size = renderEditor.size;
final transform = renderEditor.getTransformTo(null);
_textInputConnection!.setEditableSizeAndTransform(size, transform);
});
}
}
}

Loading…
Cancel
Save