material desing init with example
This commit is contained in:
128
lib/main.dart
128
lib/main.dart
@@ -1,44 +1,110 @@
|
||||
// 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/material.dart';
|
||||
import 'pages/welcome_page.dart';
|
||||
import 'pages/home_page.dart';
|
||||
|
||||
import 'constants.dart';
|
||||
import 'home.dart';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
runApp(
|
||||
const App(),
|
||||
);
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
const MyApp({super.key});
|
||||
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;
|
||||
ColorImageProvider imageSelected = ColorImageProvider.leaves;
|
||||
ColorScheme? imageColorScheme = const ColorScheme.light();
|
||||
ColorSelectionMethod colorSelectionMethod = ColorSelectionMethod.colorSeed;
|
||||
|
||||
bool get useLightMode {
|
||||
switch (themeMode) {
|
||||
case ThemeMode.system:
|
||||
return View.of(context).platformDispatcher.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(() {
|
||||
colorSelectionMethod = ColorSelectionMethod.colorSeed;
|
||||
colorSelected = ColorSeed.values[value];
|
||||
});
|
||||
}
|
||||
|
||||
void handleImageSelect(int value) {
|
||||
final String url = ColorImageProvider.values[value].url;
|
||||
ColorScheme.fromImageProvider(provider: NetworkImage(url))
|
||||
.then((newScheme) {
|
||||
setState(() {
|
||||
colorSelectionMethod = ColorSelectionMethod.image;
|
||||
imageSelected = ColorImageProvider.values[value];
|
||||
imageColorScheme = newScheme;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// This widget is the root of your application.
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
title: 'Flutter Demo',
|
||||
debugShowCheckedModeBanner: false,
|
||||
title: 'Material 3',
|
||||
themeMode: themeMode,
|
||||
theme: ThemeData(
|
||||
primaryColor: Colors.red,
|
||||
accentCoulor: Colors.blue,
|
||||
fontFamily: 'Roboto',
|
||||
textTheme: TextTheme(
|
||||
headline1: TextStyle(fontSize: 24),
|
||||
headline2: TextStyle(fontSize: 20),
|
||||
headline3: TextStyle(fontSize: 16),
|
||||
)),
|
||||
// Cambia la proprietà `home` con `WelcomePage()`
|
||||
home: WelcomePage(),
|
||||
// Aggiungi un nuovo `onGenerateRoute`
|
||||
onGenerateRoute: (settings) {
|
||||
// Se la route è `/home`, esci dal `WelcomePage()` e vai alla `HomePage()`
|
||||
if (settings.name == '/home') {
|
||||
Navigator.pop(context);
|
||||
return MaterialPageRoute(
|
||||
builder: (context) => const HomePage(
|
||||
title: 'Titolo',
|
||||
));
|
||||
}
|
||||
// Altrimenti, restituisci la route predefinita
|
||||
return MaterialPageRoute(builder: (context) => WelcomePage());
|
||||
},
|
||||
colorSchemeSeed: colorSelectionMethod == ColorSelectionMethod.colorSeed
|
||||
? colorSelected.color
|
||||
: null,
|
||||
colorScheme: colorSelectionMethod == ColorSelectionMethod.image
|
||||
? imageColorScheme
|
||||
: null,
|
||||
useMaterial3: useMaterial3,
|
||||
brightness: Brightness.light,
|
||||
),
|
||||
darkTheme: ThemeData(
|
||||
colorSchemeSeed: colorSelectionMethod == ColorSelectionMethod.colorSeed
|
||||
? colorSelected.color
|
||||
: imageColorScheme!.primary,
|
||||
useMaterial3: useMaterial3,
|
||||
brightness: Brightness.dark,
|
||||
),
|
||||
home: Home(
|
||||
useLightMode: useLightMode,
|
||||
useMaterial3: useMaterial3,
|
||||
colorSelected: colorSelected,
|
||||
imageSelected: imageSelected,
|
||||
handleBrightnessChange: handleBrightnessChange,
|
||||
handleMaterialVersionChange: handleMaterialVersionChange,
|
||||
handleColorSelect: handleColorSelect,
|
||||
handleImageSelect: handleImageSelect,
|
||||
colorSelectionMethod: colorSelectionMethod,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user