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/foundation.dart';
6import 'package:flutter/material.dart';
7import 'package:flutter/rendering.dart';
8
9import 'use_cases/use_cases.dart';
10
11void main() {
12 runApp(const App());
13 if (kIsWeb) {
14 SemanticsBinding.instance.ensureSemantics();
15 }
16}
17
18class App extends StatelessWidget {
19 const App({super.key});
20
21 @override
22 Widget build(BuildContext context) {
23 final ThemeData lightTheme = ThemeData(
24 colorScheme: ColorScheme.fromSeed(
25 seedColor: const Color(0xff6750a4),
26 contrastLevel: MediaQuery.highContrastOf(context) ? 1.0 : 0.0,
27 ));
28 final ThemeData darkTheme = ThemeData(
29 colorScheme: ColorScheme.fromSeed(
30 brightness: Brightness.dark,
31 seedColor: const Color(0xff6750a4),
32 contrastLevel: MediaQuery.highContrastOf(context) ? 1.0 : 0.0,
33 ));
34
35 final Map<String, WidgetBuilder> routes =
36 Map<String, WidgetBuilder>.fromEntries(
37 useCases.map((UseCase useCase) =>
38 MapEntry<String, WidgetBuilder>(useCase.route, (BuildContext context) => useCase.buildWithTitle(context))),
39 );
40
41 return MaterialApp(
42 title: 'Accessibility Assessments Home Page',
43 theme: lightTheme,
44 darkTheme: darkTheme,
45 routes: <String, WidgetBuilder>{'/': (_) => const HomePage(), ...routes},
46 );
47 }
48}
49
50class HomePage extends StatefulWidget {
51 const HomePage({super.key});
52
53 @override
54 State<HomePage> createState() => HomePageState();
55}
56
57class HomePageState extends State<HomePage> {
58 final ScrollController scrollController = ScrollController();
59
60 @override
61 void dispose() {
62 scrollController.dispose();
63 super.dispose();
64 }
65
66 Widget _buildUseCaseItem(int index, UseCase useCase) {
67 return Padding(
68 padding: const EdgeInsets.all(10),
69 child: Builder(builder: (BuildContext context) {
70 return TextButton(
71 key: Key(useCase.name),
72 onPressed: () => Navigator.of(context).pushNamed(useCase.route, arguments: useCase.name),
73 child: Text(useCase.name),
74 );
75 }));
76 }
77
78 @override
79 Widget build(BuildContext context) {
80
81 return Scaffold(
82 appBar: AppBar(
83 title: Semantics(headingLevel: 1, child: const Text('Accessibility Assessments')),
84 ),
85 body: Center(
86 child: ListView(
87 controller: scrollController,
88 children: List<Widget>.generate(
89 useCases.length,
90 (int index) => _buildUseCaseItem(index, useCases[index]),
91 ),
92 ),
93 ),
94 );
95 }
96}
97

Provided by KDAB

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