// 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', );