123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import 'package:appflowy_editor/appflowy_editor.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/services.dart';
- import 'package:flutter_test/flutter_test.dart';
- extension IME on WidgetTester {
- IMESimulator get ime => IMESimulator(this);
- }
- class IMESimulator {
- IMESimulator(this.tester) {
- client = findDeltaTextInputClient();
- }
- final WidgetTester tester;
- late final DeltaTextInputClient client;
- Future<void> insertText(String text) async {
- for (final c in text.characters) {
- await insertCharacter(c);
- }
- }
- Future<void> insertCharacter(String character) async {
- final value = client.currentTextEditingValue;
- if (value == null) {
- assert(false);
- return;
- }
- final deltas = [
- TextEditingDeltaInsertion(
- textInserted: character,
- oldText: value.text.replaceRange(
- value.selection.start,
- value.selection.end,
- '',
- ),
- insertionOffset: value.selection.baseOffset,
- selection: TextSelection.collapsed(
- offset: value.selection.baseOffset + 1,
- ),
- composing: TextRange.empty,
- ),
- ];
- client.updateEditingValueWithDeltas(deltas);
- await tester.pumpAndSettle();
- }
- DeltaTextInputClient findDeltaTextInputClient() {
- final finder = find.byType(KeyboardServiceWidget);
- final KeyboardServiceWidgetState state = tester.state(finder);
- return state.textInputService as DeltaTextInputClient;
- }
- }
|