mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 13:58:47 +00:00
* improvements * fix focus * add comment * add comment * copy changes to root material_3_demo * fix large breakpoint * fix large breakpoint * Create integration_test.dart * refactor main.dart into home.dart and constants.dart * add integration_test to pubspec * copy to root material_3_demo * remove removal of constraints * address feedback
86 lines
2.0 KiB
Dart
86 lines
2.0 KiB
Dart
// 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<App> createState() => _AppState();
|
|
}
|
|
|
|
class _AppState extends State<App> {
|
|
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,
|
|
),
|
|
);
|
|
}
|
|
}
|