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.
53 lines
1.8 KiB
53 lines
1.8 KiB
2 years ago
|
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();
|
||
|
});
|
||
|
}
|
||
|
}
|