mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
41 lines
1.6 KiB
Dart
41 lines
1.6 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
/// A mock class to control the return result of Live Text input functions.
|
|
class LiveTextInputTester {
|
|
LiveTextInputTester() {
|
|
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.platform, _handler);
|
|
}
|
|
|
|
bool mockLiveTextInputEnabled = false;
|
|
|
|
Future<Object?> _handler(MethodCall methodCall) async {
|
|
// Need to set Clipboard.hasStrings method handler because when showing the tool bar,
|
|
// the Clipboard.hasStrings will also be invoked. If this isn't handled,
|
|
// an exception will be thrown.
|
|
if (methodCall.method == 'Clipboard.hasStrings') {
|
|
return <String, bool>{'value': true};
|
|
}
|
|
if (methodCall.method == 'LiveText.isLiveTextInputAvailable') {
|
|
return mockLiveTextInputEnabled;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void dispose() {
|
|
assert(TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.checkMockMessageHandler(SystemChannels.platform.name, _handler));
|
|
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.platform, null);
|
|
}
|
|
}
|
|
|
|
/// A function to find the live text button.
|
|
Finder findLiveTextButton() => find.byWidgetPredicate((Widget widget) =>
|
|
widget is CustomPaint &&
|
|
'${widget.painter?.runtimeType}' == '_LiveTextIconPainter',
|
|
);
|