|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_quill/flutter_quill.dart';
|
|
|
|
import 'package:flutter_quill/flutter_quill_test.dart';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
group('Bug fix', () {
|
|
|
|
group('1189 - The provided text position is not in the current node', () {
|
|
|
|
late QuillController controller;
|
|
|
|
late QuillEditor editor;
|
|
|
|
|
|
|
|
setUp(() {
|
|
|
|
controller = QuillController.basic();
|
|
|
|
editor = QuillEditor.basic(controller: controller, readOnly: false);
|
|
|
|
});
|
|
|
|
|
|
|
|
tearDown(() {
|
|
|
|
controller.dispose();
|
|
|
|
});
|
|
|
|
|
|
|
|
testWidgets('Refocus editor after controller clears document',
|
|
|
|
(tester) async {
|
|
|
|
await tester.pumpWidget(MaterialApp(home: Column(children: [editor])));
|
|
|
|
await tester.quillEnterText(find.byType(QuillEditor), 'test\n');
|
|
|
|
|
|
|
|
editor.focusNode.unfocus();
|
|
|
|
await tester.pump();
|
|
|
|
controller.clear();
|
|
|
|
editor.focusNode.requestFocus();
|
|
|
|
await tester.pump();
|
|
|
|
expect(tester.takeException(), isNull);
|
|
|
|
});
|
|
|
|
|
|
|
|
testWidgets('Refocus editor after removing block attribute',
|
|
|
|
(tester) async {
|
|
|
|
await tester.pumpWidget(MaterialApp(home: Column(children: [editor])));
|
|
|
|
await tester.quillEnterText(find.byType(QuillEditor), 'test\n');
|
|
|
|
|
|
|
|
controller.formatSelection(Attribute.ul);
|
|
|
|
editor.focusNode.unfocus();
|
|
|
|
await tester.pump();
|
|
|
|
controller.formatSelection(const ListAttribute(null));
|
|
|
|
editor.focusNode.requestFocus();
|
|
|
|
await tester.pump();
|
|
|
|
expect(tester.takeException(), isNull);
|
|
|
|
});
|
|
|
|
|
|
|
|
testWidgets('Tap checkbox in unfocused editor', (tester) async {
|
|
|
|
await tester.pumpWidget(MaterialApp(home: Column(children: [editor])));
|
|
|
|
await tester.quillEnterText(find.byType(QuillEditor), 'test\n');
|
|
|
|
|
|
|
|
controller.formatSelection(Attribute.unchecked);
|
|
|
|
editor.focusNode.unfocus();
|
|
|
|
await tester.pump();
|
|
|
|
await tester.tap(find.byType(CheckboxPoint));
|
|
|
|
expect(tester.takeException(), isNull);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|