
This auto-formats all *.dart files in the repository outside of the `engine` subdirectory and enforces that these files stay formatted with a presubmit check. **Reviewers:** Please carefully review all the commits except for the one titled "formatted". The "formatted" commit was auto-generated by running `dev/tools/format.sh -a -f`. The other commits were hand-crafted to prepare the repo for the formatting change. I recommend reviewing the commits one-by-one via the "Commits" tab and avoiding Github's "Files changed" tab as it will likely slow down your browser because of the size of this PR. --------- Co-authored-by: Kate Lovett <katelovett@google.com> Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
767 lines
34 KiB
Dart
767 lines
34 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/material.dart';
|
|
import 'package:flutter_gallery/demo/all.dart';
|
|
import 'package:flutter_gallery/gallery/app.dart';
|
|
import 'package:flutter_gallery/gallery/themes.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
class TestMaterialApp extends StatelessWidget {
|
|
const TestMaterialApp({super.key, required this.home});
|
|
|
|
final Widget home;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp(theme: ThemeData(useMaterial3: false), home: home);
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
group('All material demos meet recommended tap target sizes', () {
|
|
testWidgets('backdrop_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: BackdropDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('bottom_app_bar_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: BottomAppBarDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('bottom_navigation_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: BottomNavigationDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('buttons_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ButtonsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('cards_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: CardsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('chip_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ChipDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
}, skip: true); // https://github.com/flutter/flutter/issues/42455
|
|
|
|
testWidgets('data_table_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DataTableDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('date_and_time_picker_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DateAndTimePickerDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('dialog_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DialogDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('drawer_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DrawerDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('elevation_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ElevationDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('expansion_panels_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ExpansionPanelsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('grid_list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: GridListDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('icons_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: IconsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('leave_behind_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: LeaveBehindDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ListDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('menu_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: MenuDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('modal_bottom_sheet_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ModalBottomSheetDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('overscroll_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: OverscrollDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('page_selector_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: PageSelectorDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('persistent_bottom_sheet_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: PersistentBottomSheetDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('progress_indicator_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ProgressIndicatorDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('reorderable_list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ReorderableListDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('scrollable_tabs_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ScrollableTabsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('search_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SearchDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('selection_controls_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SelectionControlsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('slider_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SliderDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('snack_bar_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SnackBarDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tabs_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TabsDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tabs_fab_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TabsFabDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('text_form_field_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TextFormFieldDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tooltip_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TooltipDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('expansion_tile_list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ExpansionTileListDemo()));
|
|
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
});
|
|
|
|
group('All material demos have labeled tap targets', () {
|
|
testWidgets('backdrop_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: BackdropDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('bottom_app_bar_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: BottomAppBarDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('bottom_navigation_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: BottomNavigationDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('buttons_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ButtonsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('cards_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: CardsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('chip_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ChipDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets(
|
|
'data_table_demo',
|
|
(WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DataTableDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
},
|
|
// DataTables are not accessible, https://github.com/flutter/flutter/issues/10830
|
|
skip: true,
|
|
);
|
|
|
|
testWidgets('date_and_time_picker_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DateAndTimePickerDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('dialog_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DialogDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('drawer_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: DrawerDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('elevation_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ElevationDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('expansion_panels_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ExpansionPanelsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('grid_list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: GridListDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('icons_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: IconsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('leave_behind_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: LeaveBehindDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ListDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('menu_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: MenuDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('modal_bottom_sheet_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ModalBottomSheetDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('overscroll_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: OverscrollDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('page_selector_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: PageSelectorDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('persistent_bottom_sheet_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: PersistentBottomSheetDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('progress_indicator_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ProgressIndicatorDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('reorderable_list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ReorderableListDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('scrollable_tabs_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ScrollableTabsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('search_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SearchDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('selection_controls_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SelectionControlsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('slider_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SliderDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('snack_bar_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: SnackBarDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tabs_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TabsDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tabs_fab_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TabsFabDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('text_form_field_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TextFormFieldDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tooltip_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: TooltipDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('expansion_tile_list_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const TestMaterialApp(home: ExpansionTileListDemo()));
|
|
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
|
|
handle.dispose();
|
|
});
|
|
});
|
|
|
|
group('All material demos meet text contrast guidelines', () {
|
|
final List<ThemeData> themes = <ThemeData>[kLightGalleryTheme, kDarkGalleryTheme];
|
|
|
|
const List<String> themeNames = <String>['kLightGalleryTheme', 'kDarkGalleryTheme'];
|
|
|
|
for (int themeIndex = 0; themeIndex < themes.length; themeIndex += 1) {
|
|
final ThemeData theme = themes[themeIndex];
|
|
final String themeName = themeNames[themeIndex];
|
|
|
|
testWidgets('backdrop_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const BackdropDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('bottom_app_bar_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const BottomAppBarDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('bottom_navigation_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const BottomNavigationDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('buttons_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ButtonsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('cards_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const CardsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('chip_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ChipDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('data_table_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const DataTableDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('date_and_time_picker_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const DateAndTimePickerDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('dialog_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const DialogDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('drawer_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const DrawerDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('elevation_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ElevationDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('expansion_panels_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ExpansionPanelsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('grid_list_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const GridListDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('icons_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const IconsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('leave_behind_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const LeaveBehindDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('list_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ListDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('menu_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const MenuDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('modal_bottom_sheet_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ModalBottomSheetDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('overscroll_demo', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(const MaterialApp(home: OverscrollDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('page_selector_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const PageSelectorDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('persistent_bottom_sheet_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const PersistentBottomSheetDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('progress_indicator_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ProgressIndicatorDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('reorderable_list_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ReorderableListDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('scrollable_tabs_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ScrollableTabsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('search_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const SearchDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('selection_controls_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const SelectionControlsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('slider_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const SliderDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('snack_bar_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const SnackBarDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tabs_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const TabsDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tabs_fab_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const TabsFabDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('text_form_field_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const TextFormFieldDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('tooltip_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const TooltipDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
|
|
testWidgets('expansion_tile_list_demo $themeName', (WidgetTester tester) async {
|
|
final SemanticsHandle handle = tester.ensureSemantics();
|
|
await tester.pumpWidget(MaterialApp(theme: theme, home: const ExpansionTileListDemo()));
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
handle.dispose();
|
|
});
|
|
}
|
|
});
|
|
|
|
group('Gallery home page meets text contrast guidelines', () {
|
|
testWidgets('options menu', (WidgetTester tester) async {
|
|
await tester.pumpWidget(const GalleryApp(testMode: true));
|
|
await tester.tap(find.byTooltip('Toggle options page'));
|
|
await tester.pumpAndSettle();
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
});
|
|
|
|
testWidgets('options menu - dark theme', (WidgetTester tester) async {
|
|
await tester.pumpWidget(const GalleryApp(testMode: true));
|
|
await tester.tap(find.byTooltip('Toggle options page'));
|
|
await tester.pumpAndSettle();
|
|
|
|
// Toggle dark mode.
|
|
final Finder themeToggleContainer = find.ancestor(
|
|
of: find.text('Theme'),
|
|
matching: find.byType(Container),
|
|
);
|
|
final Finder themeMenuButton = find.descendant(
|
|
of: themeToggleContainer,
|
|
matching: find.byIcon(Icons.arrow_drop_down),
|
|
);
|
|
await tester.tap(themeMenuButton);
|
|
await tester.pumpAndSettle();
|
|
await tester.tap(find.text('Dark'));
|
|
await tester.pumpAndSettle();
|
|
|
|
await expectLater(tester, meetsGuideline(textContrastGuideline));
|
|
});
|
|
});
|
|
}
|