Merge branch 'master' into master

pull/41/head
Rishi Raj Singh 4 years ago committed by rish07
commit ff4e53c026
  1. 9
      CHANGELOG.md
  2. 24
      app/assets/sample_data.json
  3. 27
      app/pubspec.lock
  4. 17
      lib/widgets/editor.dart
  5. 19
      lib/widgets/raw_editor.dart
  6. 5
      lib/widgets/text_line.dart
  7. 2
      lib/widgets/toolbar.dart
  8. 23
      pubspec.lock
  9. 5
      pubspec.yaml

@ -94,3 +94,12 @@
## [0.3.0] ## [0.3.0]
* Line Height calculated based on font size. * Line Height calculated based on font size.
## [0.3.1]
* cursor focus when keyboard is on.
## [0.3.2]
* Fix cursor focus issue when keyboard is on.
## [0.3.3]
* More fix on cursor focus issue when keyboard is on.

@ -473,6 +473,30 @@
}, },
"insert": "Huge" "insert": "Huge"
}, },
{
"attributes": {
"size": "15.0"
},
"insert": "font size 15"
},
{
"insert": " "
},
{
"attributes": {
"size": "35"
},
"insert": "font size 35"
},
{
"insert": " "
},
{
"attributes": {
"size": "20"
},
"insert": "font size 20"
},
{ {
"insert": "\n" "insert": "\n"
} }

@ -110,7 +110,28 @@ packages:
name: flutter_colorpicker name: flutter_colorpicker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.4" version: "0.3.5"
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: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
@ -124,7 +145,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "0.3.0" version: "0.3.3"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -300,7 +321,7 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.1"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:

@ -411,7 +411,14 @@ class _QuillEditorSelectionGestureDetectorBuilder
builder: (context) => ImageTapWrapper( builder: (context) => ImageTapWrapper(
imageProvider: imageUrl.startsWith('http') imageProvider: imageUrl.startsWith('http')
? NetworkImage(imageUrl) ? NetworkImage(imageUrl)
:(isBase64(imageUrl))?Image.memory(base64.decode(imageUrl),): FileImage(io.File(blockEmbed.data),),), : (isBase64(imageUrl))
? Image.memory(
base64.decode(imageUrl),
)
: FileImage(
io.File(blockEmbed.data),
),
),
), ),
); );
} }
@ -878,19 +885,17 @@ class RenderEditor extends RenderEditableContainerBox
double getOffsetToRevealCursor( double getOffsetToRevealCursor(
double viewportHeight, double scrollOffset, double offsetInViewport) { double viewportHeight, double scrollOffset, double offsetInViewport) {
List<TextSelectionPoint> endpoints = getEndpointsForSelection(selection); List<TextSelectionPoint> endpoints = getEndpointsForSelection(selection);
if (endpoints.length != 1) { TextSelectionPoint endpoint = endpoints.first;
return null;
}
RenderEditableBox child = childAtPosition(selection.extent); RenderEditableBox child = childAtPosition(selection.extent);
const kMargin = 8.0; const kMargin = 8.0;
double caretTop = endpoints.single.point.dy - double caretTop = endpoint.point.dy -
child.preferredLineHeight(TextPosition( child.preferredLineHeight(TextPosition(
offset: offset:
selection.extentOffset - child.getContainer().getOffset())) - selection.extentOffset - child.getContainer().getOffset())) -
kMargin + kMargin +
offsetInViewport; offsetInViewport;
final caretBottom = endpoints.single.point.dy + kMargin + offsetInViewport; final caretBottom = endpoint.point.dy + kMargin + offsetInViewport;
double dy; double dy;
if (caretTop < scrollOffset) { if (caretTop < scrollOffset) {
dy = caretTop; dy = caretTop;

@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter/services.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/attribute.dart';
import 'package:flutter_quill/models/documents/document.dart'; import 'package:flutter_quill/models/documents/document.dart';
import 'package:flutter_quill/models/documents/nodes/block.dart'; import 'package:flutter_quill/models/documents/nodes/block.dart';
@ -123,8 +124,10 @@ class RawEditorState extends EditorState
FocusAttachment _focusAttachment; FocusAttachment _focusAttachment;
CursorCont _cursorCont; CursorCont _cursorCont;
ScrollController _scrollController; ScrollController _scrollController;
KeyboardVisibilityController _keyboardVisibilityController;
KeyboardListener _keyboardListener; KeyboardListener _keyboardListener;
bool _didAutoFocus = false; bool _didAutoFocus = false;
bool _keyboardVisible = false;
DefaultStyles _styles; DefaultStyles _styles;
final ClipboardStatusNotifier _clipboardStatus = ClipboardStatusNotifier(); final ClipboardStatusNotifier _clipboardStatus = ClipboardStatusNotifier();
final LayerLink _toolbarLayerLink = LayerLink(); final LayerLink _toolbarLayerLink = LayerLink();
@ -571,8 +574,10 @@ class RawEditorState extends EditorState
_selectionOverlay?.handlesVisible = _shouldShowSelectionHandles(); _selectionOverlay?.handlesVisible = _shouldShowSelectionHandles();
if (!_keyboardVisible) {
requestKeyboard(); requestKeyboard();
} }
}
_buildChildren(Document doc, BuildContext context) { _buildChildren(Document doc, BuildContext context) {
final result = <Widget>[]; final result = <Widget>[];
@ -692,6 +697,14 @@ class RawEditorState extends EditorState
handleDelete, handleDelete,
); );
_keyboardVisibilityController = KeyboardVisibilityController();
_keyboardVisibilityController.onChange.listen((bool visible) {
_keyboardVisible = visible;
if (visible) {
_onChangeTextEditingValue();
}
});
_focusAttachment = widget.focusNode.attach(context, _focusAttachment = widget.focusNode.attach(context,
onKey: (node, event) => _keyboardListener.handleRawKeyEvent(event)); onKey: (node, event) => _keyboardListener.handleRawKeyEvent(event));
widget.focusNode.addListener(_handleFocusChanged); widget.focusNode.addListener(_handleFocusChanged);
@ -869,8 +882,14 @@ class RawEditorState extends EditorState
} }
_didChangeTextEditingValue() { _didChangeTextEditingValue() {
if (_keyboardVisible) {
_onChangeTextEditingValue();
} else {
requestKeyboard(); requestKeyboard();
}
}
_onChangeTextEditingValue() {
_showCaretOnScreen(); _showCaretOnScreen();
updateRemoteValueIfNeeded(); updateRemoteValueIfNeeded();
_cursorCont.startOrStopCursorTimerIfNeeded( _cursorCont.startOrStopCursorTimerIfNeeded(

@ -153,9 +153,14 @@ class TextLine extends StatelessWidget {
res = res.merge(defaultStyles.sizeHuge); res = res.merge(defaultStyles.sizeHuge);
break; break;
default: default:
double fontSize = double.tryParse(size.value);
if (fontSize != null) {
res = res.merge(TextStyle(fontSize: fontSize));
} else {
throw "Invalid size ${size.value}"; throw "Invalid size ${size.value}";
} }
} }
}
Attribute color = textNode.style.attributes[Attribute.color.key]; Attribute color = textNode.style.attributes[Attribute.color.key];
if (color != null && color.value != null) { if (color != null && color.value != null) {

@ -784,6 +784,8 @@ class _HistoryButtonState extends State<HistoryButton> {
} }
void _setIconColor() { void _setIconColor() {
if (!mounted) return;
if (widget.undo) { if (widget.undo) {
setState(() { setState(() {
_iconColor = widget.controller.hasUndo _iconColor = widget.controller.hasUndo

@ -90,6 +90,27 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.5" 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: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
@ -223,7 +244,7 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.1"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:

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

Loading…
Cancel
Save