| // 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/material.dart'; |
| import 'package:flutter_api_samples/material/time_picker/show_time_picker.0.dart' as example; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| void main() { |
| testWidgets('Can open and modify time picker', (WidgetTester tester) async { |
| const String openPicker = 'Open time picker'; |
| final List<String> options = <String>[ |
| '$TimePickerEntryMode', |
| ... TimePickerEntryMode.values.map<String>((TimePickerEntryMode value) => value.name), |
| '$ThemeMode', |
| ... ThemeMode.values.map<String>((ThemeMode value) => value.name), |
| '$TextDirection', |
| ... TextDirection.values.map<String>((TextDirection value) => value.name), |
| '$MaterialTapTargetSize', |
| ... MaterialTapTargetSize.values.map<String>((MaterialTapTargetSize value) => value.name), |
| '$Orientation', |
| ... Orientation.values.map<String>((Orientation value) => value.name), |
| 'Time Mode', |
| '12-hour am/pm time', |
| '24-hour time', |
| 'Material Version', |
| 'Material 2', |
| 'Material 3', |
| openPicker, |
| ]; |
| |
| await tester.pumpWidget( |
| const MaterialApp( |
| home: Scaffold( |
| body: example.ShowTimePickerApp(), |
| ), |
| ), |
| ); |
| |
| for (final String option in options) { |
| expect(find.text(option), findsOneWidget, reason: 'Unable to find $option widget in example.'); |
| } |
| |
| // Open time picker |
| await tester.tap(find.text(openPicker)); |
| await tester.pumpAndSettle(); |
| expect(find.text('Select time'), findsOneWidget); |
| expect(find.text('Cancel'), findsOneWidget); |
| expect(find.text('OK'), findsOneWidget); |
| |
| // Close time picker |
| await tester.tapAt(const Offset(1, 1)); |
| await tester.pumpAndSettle(); |
| expect(find.text('Select time'), findsNothing); |
| expect(find.text('Cancel'), findsNothing); |
| expect(find.text('OK'), findsNothing); |
| |
| // Change an option. |
| await tester.tap(find.text('Material 2')); |
| await tester.pumpAndSettle(); |
| await tester.tap(find.text(openPicker)); |
| await tester.pumpAndSettle(); |
| expect(find.text('SELECT TIME'), findsOneWidget); |
| expect(find.text('CANCEL'), findsOneWidget); |
| expect(find.text('OK'), findsOneWidget); |
| }); |
| } |