// 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/widgets.dart'; import '../common/dynamic_title.dart'; import 'action_chip.dart'; import 'app_bar.dart'; import 'auto_complete.dart'; import 'badge.dart'; import 'card.dart'; import 'check_box_list_tile.dart'; import 'date_picker.dart'; import 'dialog.dart'; import 'drawer.dart'; import 'expansion_tile.dart'; import 'material_banner.dart'; import 'navigation_bar.dart'; import 'navigation_drawer.dart'; import 'navigation_rail.dart'; import 'radio_list_tile.dart'; import 'range_slider.dart'; import 'slider.dart'; import 'snack_bar.dart'; import 'switch_list_tile.dart'; import 'tab_bar_view.dart'; import 'text_button.dart'; import 'text_field.dart'; import 'text_field_password.dart'; /// The category a use-case falls under. enum UseCaseCategory { /// An essential use-case requested to be covered for the purpose of various /// a11y certifications. core, /// An additional use-case that the team considers important to cover, even if /// nobody requested this as part of any certification process. additional, } abstract class UseCase { UseCase({required this.useCaseCategory}); final UseCaseCategory useCaseCategory; String get name; String get route; Widget buildWithTitle(BuildContext context) { return DynamicTitle(title: name, child: build(context)); } Widget build(BuildContext context); } final List useCases = [ CheckBoxListTile(), DialogUseCase(), SliderUseCase(), RangeSliderUseCase(), TextFieldUseCase(), TextFieldPasswordUseCase(), DatePickerUseCase(), AutoCompleteUseCase(), BadgeUseCase(), MaterialBannerUseCase(), NavigationBarUseCase(), TextButtonUseCase(), RadioListTileUseCase(), ActionChipUseCase(), SnackBarUseCase(), SwitchListTileUseCase(), ExpansionTileUseCase(), CardUseCase(), DrawerUseCase(), NavigationDrawerUseCase(), NavigationRailUseCase(), AppBarUseCase(), TabBarViewUseCase(), ];