| // 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/gestures.dart'; |
| import 'package:flutter/material.dart'; |
| import 'package:flutter_api_samples/material/tooltip/tooltip.1.dart' as example; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| void main() { |
| testWidgets('Tooltip wait and show duration', (WidgetTester tester) async { |
| const String tooltipText = 'I am a Tooltip'; |
| |
| await tester.pumpWidget( |
| const example.MyApp(), |
| ); |
| |
| TestGesture? gesture = await tester.createGesture(kind: PointerDeviceKind.mouse); |
| addTearDown(() async { |
| if (gesture != null) { |
| return gesture.removePointer(); |
| } |
| }); |
| await gesture.addPointer(); |
| await gesture.moveTo(const Offset(1.0, 1.0)); |
| await tester.pump(); |
| expect(find.text(tooltipText), findsNothing); |
| |
| // Move the mouse over the text and wait for the tooltip to appear. |
| final Finder tooltip = find.byType(Tooltip); |
| await gesture.moveTo(tester.getCenter(tooltip)); |
| // Wait half a second and the tooltip should still not be visible. |
| await tester.pump(const Duration(milliseconds: 500)); |
| expect(find.text(tooltipText), findsNothing); |
| // Wait another half a second and the tooltip should be visible now. |
| await tester.pump(const Duration(milliseconds: 500)); |
| expect(find.text(tooltipText), findsOneWidget); |
| // Move the mouse away and wait for the tooltip to disappear. |
| await gesture.moveTo(const Offset(1.0, 1.0)); |
| await tester.pump(); |
| // Wait a second and the tooltip should still be visible. |
| await tester.pump(const Duration(seconds: 1)); |
| expect(find.text(tooltipText), findsOneWidget); |
| // Wait another second and the tooltip should be gone. |
| await tester.pump(const Duration(seconds: 1)); |
| await tester.pumpAndSettle(); |
| await gesture.removePointer(); |
| gesture = null; |
| expect(find.text(tooltipText), findsNothing); |
| }); |
| } |