dartlangeditorflutterflutter-appsflutter-examplesflutter-packageflutter-widgetquillquill-deltaquilljsreactquillrich-textrich-text-editorwysiwygwysiwyg-editor
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.8 KiB
52 lines
1.8 KiB
import 'package:flutter/material.dart'; |
|
import 'package:flutter_quill/src/widgets/editor.dart'; |
|
import 'package:flutter_quill/src/widgets/raw_editor.dart'; |
|
import 'package:flutter_test/flutter_test.dart'; |
|
|
|
extension QuillEnterText on WidgetTester { |
|
/// Give the QuillEditor widget specified by [finder] the focus. |
|
Future<void> quillGiveFocus(Finder finder) { |
|
return TestAsyncUtils.guard(() async { |
|
final editor = state<QuillEditorState>( |
|
find.descendant( |
|
of: finder, |
|
matching: |
|
find.byType(QuillEditor, skipOffstage: finder.skipOffstage), |
|
matchRoot: true), |
|
); |
|
editor.widget.focusNode.requestFocus(); |
|
await pump(); |
|
expect(editor.widget.focusNode.hasFocus, isTrue); |
|
}); |
|
} |
|
|
|
/// Give the QuillEditor widget specified by [finder] the focus and update its |
|
/// editing value with [text], as if it had been provided by the onscreen |
|
/// keyboard. |
|
/// |
|
/// The widget specified by [finder] must be a [QuillEditor] or have a |
|
/// [QuillEditor] descendant. For example `find.byType(QuillEditor)`. |
|
Future<void> quillEnterText(Finder finder, String text) async { |
|
return TestAsyncUtils.guard(() async { |
|
await quillGiveFocus(finder); |
|
await updateEditingValue(finder, text); |
|
await idle(); |
|
}); |
|
} |
|
|
|
Future<void> updateEditingValue(Finder finder, String text) async { |
|
return TestAsyncUtils.guard(() async { |
|
final editor = state<RawEditorState>( |
|
find.descendant( |
|
of: finder, |
|
matching: find.byType(RawEditor, skipOffstage: finder.skipOffstage), |
|
matchRoot: true), |
|
); |
|
testTextInput.updateEditingValue(TextEditingValue( |
|
text: text, |
|
selection: TextSelection.collapsed( |
|
offset: editor.textEditingValue.text.length))); |
|
await idle(); |
|
}); |
|
} |
|
}
|
|
|