// Copyright 2021 The Flutter team. 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/scheduler.dart'; import 'constants.dart'; import 'home.dart'; void main() { runApp( const App(), ); } class App extends StatefulWidget { const App({super.key}); @override State createState() => _AppState(); } class _AppState extends State { bool useMaterial3 = true; ThemeMode themeMode = ThemeMode.system; ColorSeed colorSelected = ColorSeed.baseColor; bool get useLightMode { switch (themeMode) { case ThemeMode.system: return SchedulerBinding.instance.window.platformBrightness == Brightness.light; case ThemeMode.light: return true; case ThemeMode.dark: return false; } } void handleBrightnessChange(bool useLightMode) { setState(() { themeMode = useLightMode ? ThemeMode.light : ThemeMode.dark; }); } void handleMaterialVersionChange() { setState(() { useMaterial3 = !useMaterial3; }); } void handleColorSelect(int value) { setState(() { colorSelected = ColorSeed.values[value]; }); } @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Material 3', themeMode: themeMode, theme: ThemeData( colorSchemeSeed: colorSelected.color, useMaterial3: useMaterial3, brightness: Brightness.light, ), darkTheme: ThemeData( colorSchemeSeed: colorSelected.color, useMaterial3: useMaterial3, brightness: Brightness.dark, ), home: Home( useLightMode: useLightMode, useMaterial3: useMaterial3, colorSelected: colorSelected, handleBrightnessChange: handleBrightnessChange, handleMaterialVersionChange: handleMaterialVersionChange, handleColorSelect: handleColorSelect, ), ); } }