Fix cursor focus issue when keyboard is on

pull/41/head^2
Xin Yao 4 years ago
parent fd3aac999f
commit 08ed4c3c85
  1. 5
      CHANGELOG.md
  2. 23
      app/pubspec.lock
  3. 9
      lib/widgets/editor.dart
  4. 21
      lib/widgets/raw_editor.dart
  5. 21
      pubspec.lock
  6. 6
      pubspec.yaml

@ -96,4 +96,7 @@
* Line Height calculated based on font size.
## [0.3.1]
* cursor focus when keyboard is on.
* cursor focus when keyboard is on.
## [0.3.2]
* Fix cursor focus issue when keyboard is on.

@ -111,6 +111,27 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.4"
flutter_keyboard_visibility:
dependency: transitive
description:
name: flutter_keyboard_visibility
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.4"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
name: flutter_keyboard_visibility_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter_keyboard_visibility_web:
dependency: transitive
description:
name: flutter_keyboard_visibility_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
@ -124,7 +145,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.3.0"
version: "0.3.2"
flutter_test:
dependency: "direct dev"
description: flutter

@ -889,10 +889,15 @@ class RenderEditor extends RenderEditableContainerBox
kMargin +
offsetInViewport;
final caretBottom = endpoints.single.point.dy + kMargin + offsetInViewport;
double dy = caretTop;
if (caretBottom > scrollOffset + viewportHeight) {
double dy;
if (caretTop < scrollOffset) {
dy = caretTop;
} else if (caretBottom > scrollOffset + viewportHeight) {
dy = caretBottom - viewportHeight;
}
if (dy == null) {
return null;
}
return math.max(dy, 0.0);
}
}

@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_quill/models/documents/attribute.dart';
import 'package:flutter_quill/models/documents/document.dart';
import 'package:flutter_quill/models/documents/nodes/block.dart';
@ -123,8 +124,10 @@ class RawEditorState extends EditorState
FocusAttachment _focusAttachment;
CursorCont _cursorCont;
ScrollController _scrollController;
KeyboardVisibilityController _keyboardVisibilityController;
KeyboardListener _keyboardListener;
bool _didAutoFocus = false;
bool _keyboardVisible = false;
DefaultStyles _styles;
final ClipboardStatusNotifier _clipboardStatus = ClipboardStatusNotifier();
final LayerLink _toolbarLayerLink = LayerLink();
@ -692,6 +695,16 @@ class RawEditorState extends EditorState
handleDelete,
);
_keyboardVisibilityController = KeyboardVisibilityController();
_keyboardVisibilityController.onChange.listen((bool visible) {
setState(() {
_keyboardVisible = visible;
if (visible) {
_onChangeTextEditingValue();
}
});
});
_focusAttachment = widget.focusNode.attach(context,
onKey: (node, event) => _keyboardListener.handleRawKeyEvent(event));
widget.focusNode.addListener(_handleFocusChanged);
@ -869,8 +882,14 @@ class RawEditorState extends EditorState
}
_didChangeTextEditingValue() {
requestKeyboard();
if (_keyboardVisible) {
_onChangeTextEditingValue();
} else {
requestKeyboard();
}
}
_onChangeTextEditingValue() {
_showCaretOnScreen();
updateRemoteValueIfNeeded();
_cursorCont.startOrStopCursorTimerIfNeeded(

@ -90,6 +90,27 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.5"
flutter_keyboard_visibility:
dependency: "direct main"
description:
name: flutter_keyboard_visibility
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.4"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
name: flutter_keyboard_visibility_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter_keyboard_visibility_web:
dependency: transitive
description:
name: flutter_keyboard_visibility_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter_plugin_android_lifecycle:
dependency: transitive
description:

@ -1,6 +1,6 @@
name: flutter_quill
description: One client and affiliated collaborator of Flutter Quill is Bullet Journal App.
version: 0.3.1
version: 0.3.2
#author: bulletjournal
homepage: https://bulletjournal.us/home/index.html
repository: https://github.com/singerdmx/flutter-quill.git
@ -17,12 +17,12 @@ dependencies:
collection: ^1.14.13
tuple: ^1.0.3
url_launcher: ^5.7.10
flutter_colorpicker: ^0.3.4
flutter_colorpicker: ^0.3.5
image_picker: ^0.6.7+22
photo_view: ^0.10.3
universal_html: ^1.2.1
file_picker: ^2.1.6
flutter_keyboard_visibility: ^4.0.4
dev_dependencies:
flutter_test:

Loading…
Cancel
Save