1// Copyright 2014 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import 'package:flutter/material.dart';
6import 'package:flutter_api_samples/material/page_transitions_theme/page_transitions_theme.1.dart'
7 as example;
8import 'package:flutter_test/flutter_test.dart';
9
10void main() {
11 testWidgets('MaterialApp defines a custom PageTransitionsTheme', (WidgetTester tester) async {
12 await tester.pumpWidget(const example.PageTransitionsThemeApp());
13
14 final Finder homePage = find.byType(example.HomePage);
15 expect(homePage, findsOneWidget);
16
17 final PageTransitionsTheme theme = Theme.of(tester.element(homePage)).pageTransitionsTheme;
18 expect(theme.builders, isNotNull);
19
20 // Check defined page transitions builder for each platform.
21 for (final TargetPlatform platform in TargetPlatform.values) {
22 switch (platform) {
23 case TargetPlatform.android:
24 expect(theme.builders[platform], isA<ZoomPageTransitionsBuilder>());
25 final ZoomPageTransitionsBuilder builder =
26 theme.builders[platform]! as ZoomPageTransitionsBuilder;
27 expect(builder.allowSnapshotting, isFalse);
28 case TargetPlatform.iOS:
29 case TargetPlatform.macOS:
30 case TargetPlatform.linux:
31 case TargetPlatform.fuchsia:
32 case TargetPlatform.windows:
33 expect(theme.builders[platform], isNull);
34 }
35 }
36
37 // Can navigate to the second page.
38 expect(find.text('To SecondPage'), findsOneWidget);
39 await tester.tap(find.text('To SecondPage'));
40 await tester.pumpAndSettle();
41
42 // Can navigate back to the home page.
43 expect(find.text('Back to HomePage'), findsOneWidget);
44 await tester.tap(find.text('Back to HomePage'));
45 await tester.pumpAndSettle();
46 expect(find.text('To SecondPage'), findsOneWidget);
47 });
48}
49

Provided by KDAB

Privacy Policy
Learn more about Flutter for embedded and desktop on industrialflutter.com