theming!!!

This commit is contained in:
zoe 2022-07-03 00:03:10 +02:00
parent 839bb0bbde
commit c63f062640
12 changed files with 118 additions and 63 deletions

View File

@ -8,12 +8,12 @@ import 'package:flutter_localizations/flutter_localizations.dart';
import 'themes/themes.dart' as themes;
String _initRoute = "/";
ThemeData theme = themes.getTheme(themes.available[0]);
void main() async {
Intl.defaultLocale = 'en_US';
// check if all information is available
settings.saveAuthCode("");
if (await settings.loadAuthCode() == "") {
_initRoute = "/login";
}
@ -36,7 +36,7 @@ class _SlothmuState extends State<Slothmu> {
Widget build(BuildContext context) {
LocalJsonLocalization.delegate.directories = ['lib/i18n'];
return MaterialApp(
theme: themes.defaultThemeDark,
theme: theme,
supportedLocales: supported,
localizationsDelegates: [
GlobalCupertinoLocalizations.delegate,

View File

@ -1,5 +0,0 @@
import 'package:flutter/widgets.dart';
Widget Chat() {
return Center(child: Text("Chat"));
}

5
lib/pages/chat/chat.dart Normal file
View File

@ -0,0 +1,5 @@
import 'package:flutter/widgets.dart';
Widget chat(context) {
return const Center(child: Text("Chat"));
}

View File

@ -44,7 +44,7 @@ class _LoginFormState extends State<LoginForm> {
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text("greeting".i18n(), style: const TextStyle(fontSize: 64)),
Text("greeting".i18n(), style: Theme.of(context).textTheme.headline1),
TextFormField(
onSaved: (value) async {
await settings

View File

@ -0,0 +1,5 @@
import 'package:flutter/material.dart';
Widget notifications(context) {
return const Center(child: Text("Notifications"));
}

View File

@ -1,15 +1,7 @@
import 'package:flutter/material.dart';
import 'package:settings_ui/settings_ui.dart';
Widget Settings() {
return SafeArea(
child: SettingsList(contentPadding: EdgeInsets.all(24), sections: [
SettingsSection(title: Text("General"), tiles: [
SettingsTile(
title: Text("Language"),
value: Text("no"),
)
])
]),
Widget settings(context) {
return const Center(
child: Text("Settings"),
);
}

View File

@ -1,5 +1,9 @@
import 'package:flutter/material.dart';
Widget Timeline() {
return Center(child: Text("Home"));
Widget timeline(context) {
return Padding(
padding: const EdgeInsets.all(24),
child: Column(
children: [],
));
}

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:slothmu/pages/chat/%20chat.dart';
import 'package:slothmu/pages/chat/chat.dart';
import 'package:slothmu/pages/notifications/notifications.dart';
import 'package:slothmu/pages/timeline/timeline.dart';
import 'package:slothmu/pages/settings/settings.dart';
@ -12,29 +13,49 @@ class MainScaffold extends StatefulWidget {
class _MainScaffoldState extends State<MainScaffold> {
int index = 0;
final screens = [
Timeline(),
Chat(),
Settings(),
];
@override
Widget build(BuildContext context) {
final screens = [
timeline(context),
chat(context),
notifications(context),
settings(context),
];
final buttons = [
FloatingActionButton(
child: const Icon(Icons.chat_bubble),
onPressed: () {},
),
FloatingActionButton(
onPressed: () {},
child: const Icon(Icons.person_add),
),
FloatingActionButton(
onPressed: () {},
child: const Icon(Icons.clear_all),
),
null,
];
return Scaffold(
extendBody: true,
body: screens[index],
bottomNavigationBar: NavigationBar(
labelBehavior: NavigationDestinationLabelBehavior.onlyShowSelected,
elevation: 0,
height: 60,
onDestinationSelected: (index) => setState(() => this.index = index),
selectedIndex: index,
destinations: const [
NavigationDestination(
icon: Icon(Icons.list_alt), label: "Timeline"),
NavigationDestination(icon: Icon(Icons.chat), label: "Chat"),
NavigationDestination(
icon: Icon(Icons.settings), label: "Settings"),
]),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: buttons[index],
bottomNavigationBar: BottomAppBar(
child: NavigationBar(
onDestinationSelected: (index) =>
setState(() => this.index = index),
selectedIndex: index,
destinations: const [
NavigationDestination(icon: Icon(Icons.forum), label: "Timeline"),
NavigationDestination(icon: Icon(Icons.chat), label: "Chat"),
NavigationDestination(
icon: Icon(Icons.notifications), label: "Notifications"),
NavigationDestination(
icon: Icon(Icons.settings), label: "Settings"),
]),
),
);
}
}

24
lib/themes/dracula.dart Normal file
View File

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'themes.dart' as themes;
themes.CustomColors theme = themes.CustomColors(
"Dracula",
const Color.fromARGB(
255,
98,
114,
164,
),
const ColorScheme(
brightness: Brightness.dark,
primary: Color.fromARGB(255, 255, 121, 198),
onPrimary: Color.fromARGB(255, 40, 42, 54),
secondary: Color.fromARGB(255, 80, 250, 123),
onSecondary: Color.fromARGB(255, 40, 42, 54),
error: Color.fromARGB(255, 255, 85, 85),
onError: Color.fromARGB(255, 40, 42, 54),
background: Color.fromARGB(255, 40, 42, 54),
onBackground: Color.fromARGB(255, 248, 248, 242),
surface: Color.fromARGB(255, 68, 71, 90),
onSurface: Color.fromARGB(255, 248, 248, 242),
));

View File

@ -1,15 +1,32 @@
import 'package:flutter/material.dart';
import 'dracula.dart' as color_dracula;
final defaultThemeDark = ThemeData(
colorScheme: const ColorScheme(
brightness: Brightness.dark,
primary: Colors.white,
onPrimary: Colors.black,
secondary: Colors.lime,
onSecondary: Colors.black,
error: Colors.red,
onError: Colors.white,
background: Colors.black,
onBackground: Colors.white,
surface: Colors.deepPurple,
onSurface: Colors.white));
final available = [color_dracula.theme];
ThemeData getTheme(CustomColors colors) {
return ThemeData(
scaffoldBackgroundColor: colors.colorScheme.background,
bottomAppBarColor: colors.colorScheme.background,
hintColor: colors.hintColor,
colorScheme: colors.colorScheme,
errorColor: colors.colorScheme.error,
bottomAppBarTheme: BottomAppBarTheme(
color: colors.colorScheme.surface,
shape: const CircularNotchedRectangle(),
elevation: 0,
),
navigationBarTheme: const NavigationBarThemeData(
backgroundColor: Colors.transparent,
labelBehavior: NavigationDestinationLabelBehavior.onlyShowSelected,
indicatorColor: Colors.transparent,
elevation: 0,
height: 64,
),
);
}
class CustomColors {
late String name;
late Color hintColor;
late ColorScheme colorScheme;
CustomColors(this.name, this.hintColor, this.colorScheme);
}

View File

@ -63,7 +63,7 @@ packages:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.1"
file:
dependency: transitive
description:
@ -210,13 +210,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.4"
settings_ui:
dependency: "direct main"
description:
name: settings_ui
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
shared_preferences:
dependency: "direct main"
description:

View File

@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
version: 0.1.0+1
environment:
sdk: ">=2.17.3 <3.0.0"
@ -36,7 +36,6 @@ dependencies:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
settings_ui: ^2.0.2
http: ^0.13.4
localization: ^2.1.0
shared_preferences: ^2.0.15