main_bak.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright 2021 The Flutter team. 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. import 'package:flutter/material.dart';
  5. import 'package:flutter/scheduler.dart';
  6. import 'constants.dart';
  7. import 'home.dart';
  8. void main() {
  9. runApp(
  10. const App(),
  11. );
  12. }
  13. class App extends StatefulWidget {
  14. const App({super.key});
  15. @override
  16. State<App> createState() => _AppState();
  17. }
  18. class _AppState extends State<App> {
  19. bool useMaterial3 = true;
  20. ThemeMode themeMode = ThemeMode.system;
  21. ColorSeed colorSelected = ColorSeed.baseColor;
  22. bool get useLightMode {
  23. switch (themeMode) {
  24. case ThemeMode.system:
  25. return SchedulerBinding.instance.window.platformBrightness ==
  26. Brightness.light;
  27. case ThemeMode.light:
  28. return true;
  29. case ThemeMode.dark:
  30. return false;
  31. }
  32. }
  33. void handleBrightnessChange(bool useLightMode) {
  34. setState(() {
  35. themeMode = useLightMode ? ThemeMode.light : ThemeMode.dark;
  36. });
  37. }
  38. void handleMaterialVersionChange() {
  39. setState(() {
  40. useMaterial3 = !useMaterial3;
  41. });
  42. }
  43. void handleColorSelect(int value) {
  44. setState(() {
  45. colorSelected = ColorSeed.values[value];
  46. });
  47. }
  48. @override
  49. Widget build(BuildContext context) {
  50. return MaterialApp(
  51. debugShowCheckedModeBanner: false,
  52. title: 'Material 3',
  53. themeMode: themeMode,
  54. theme: ThemeData(
  55. colorSchemeSeed: colorSelected.color,
  56. useMaterial3: useMaterial3,
  57. brightness: Brightness.light,
  58. ),
  59. darkTheme: ThemeData(
  60. colorSchemeSeed: colorSelected.color,
  61. useMaterial3: useMaterial3,
  62. brightness: Brightness.dark,
  63. ),
  64. home: Home(
  65. useLightMode: useLightMode,
  66. useMaterial3: useMaterial3,
  67. colorSelected: colorSelected,
  68. handleBrightnessChange: handleBrightnessChange,
  69. handleMaterialVersionChange: handleMaterialVersionChange,
  70. handleColorSelect: handleColorSelect,
  71. ),
  72. );
  73. }
  74. }