// 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/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'use_cases/use_cases.dart'; void main() { runApp(const App()); if (kIsWeb) { SemanticsBinding.instance.ensureSemantics(); } } class App extends StatelessWidget { const App({super.key}); @override Widget build(BuildContext context) { final ThemeData lightTheme = ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: const Color(0xff6750a4), contrastLevel: MediaQuery.highContrastOf(context) ? 1.0 : 0.0, )); final ThemeData darkTheme = ThemeData( colorScheme: ColorScheme.fromSeed( brightness: Brightness.dark, seedColor: const Color(0xff6750a4), contrastLevel: MediaQuery.highContrastOf(context) ? 1.0 : 0.0, )); final Map routes = Map.fromEntries( useCases.map((UseCase useCase) => MapEntry(useCase.route, useCase.build)), ); return MaterialApp( title: 'Accessibility Assessments', theme: lightTheme, darkTheme: darkTheme, routes: { '/': (_) => const HomePage(), ...routes }, ); } } class HomePage extends StatefulWidget { const HomePage({super.key}); @override State createState() => HomePageState(); } class HomePageState extends State { final ScrollController scrollController = ScrollController(); @override void dispose() { scrollController.dispose(); super.dispose(); } Widget _buildUseCaseItem(int index, UseCase useCase) { return Padding( padding: const EdgeInsets.all(10), child: Builder( builder: (BuildContext context) { return TextButton( key: Key(useCase.name), onPressed: () => Navigator.of(context).pushNamed(useCase.route), child: Text(useCase.name), ); } ) ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Accessibility Assessments')), body: Center( child: ListView( controller: scrollController, children: List.generate( useCases.length, (int index) => _buildUseCaseItem(index, useCases[index]), ), ), ), ); } }