Merge remote-tracking branch 'origin/simon' into simon

# Conflicts:
#	lib/main.dart
This commit is contained in:
saphi
2023-09-28 08:27:56 +02:00
11 changed files with 207 additions and 397 deletions

View File

@@ -1,110 +1,6 @@
// 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 'constants.dart';
import 'home.dart';
import 'myApp.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;
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;
});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Material 3',
themeMode: themeMode,
theme: ThemeData(
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,
),
);
}
runApp(MyApp());
}

18
lib/myApp.dart Normal file
View File

@@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
import 'navigation.dart';
class MyApp extends StatelessWidget {
const MyApp({ Key? key }) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
theme: ThemeData(
useMaterial3: true,
primaryColor: Colors.red,
),
home: Navigation()
);
}
}

50
lib/navigation.dart Normal file
View File

@@ -0,0 +1,50 @@
import 'dart:ffi';
import 'package:flutter/material.dart';
import 'pages/testUI.dart';
import 'pages/TodayView.dart';
import 'pages/InboxView.dart';
import 'pages/NotesView.dart';
class Navigation extends StatefulWidget {
const Navigation({super.key});
@override
State<Navigation> createState() => _NavigationState();
}
class _NavigationState extends State<Navigation> {
int _selectedIndex = 0;
static const List<Widget> _widgetOptions = <Widget>[
TodayView(),
InboxView(),
NotesView(),
];
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("BottomNavBar"),
),
body: Center(child: _widgetOptions.elementAt(_selectedIndex)),
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.calendar_today), label: "today"),
BottomNavigationBarItem(icon: Icon(Icons.inbox), label: "Inbox"),
BottomNavigationBarItem(icon: Icon(Icons.note), label: "Notes"),
],
currentIndex: _selectedIndex,
onTap: _onItemTapped,
),
);
}
}

19
lib/pages/InboxView.dart Normal file
View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
class InboxView extends StatefulWidget {
const InboxView({super.key});
@override
State<InboxView> createState() => _InboxViewState();
}
class _InboxViewState extends State<InboxView> {
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: Icon(Icons.inbox),
)
);
}
}

View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
class NoteDetailView extends StatefulWidget {
const NoteDetailView({super.key});
@override
State<NoteDetailView> createState() => _NoteDetailViewState();
}
class _NoteDetailViewState extends State<NoteDetailView> {
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: Text('NoteDetailView'),
)
);
}
}

19
lib/pages/NotesView.dart Normal file
View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
class NotesView extends StatefulWidget {
const NotesView({super.key});
@override
State<NotesView> createState() => _NotesViewState();
}
class _NotesViewState extends State<NotesView> {
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: Icon(Icons.note),
)
);
}
}

19
lib/pages/TodayView.dart Normal file
View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
class TodayView extends StatefulWidget {
const TodayView({super.key});
@override
State<TodayView> createState() => _TodayViewState();
}
class _TodayViewState extends State<TodayView> {
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: Icon(Icons.calendar_today)
)
);
}
}

29
lib/pages/testUI.dart Normal file
View File

@@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
class TestUI extends StatefulWidget {
const TestUI({super.key});
@override
State<TestUI> createState() => _TestUIState();
}
class _TestUIState extends State<TestUI> {
int _test = 0;
void _onPressed() {
setState(() {
_test = 1;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(children: [
FloatingActionButton(onPressed: _onPressed),
Text('$_test'),
],),
),
);
}
}