started new navigation bar

This commit is contained in:
Kima 2024-03-03 23:26:11 +01:00
parent 91b293d211
commit c1965e2453
4 changed files with 135 additions and 46 deletions

View File

@ -45,11 +45,10 @@ const settingsDB = DatabaseStruct("settings", {
"show_breaks": int, "show_breaks": int,
"font_family": String, "font_family": String,
"plus_session_id": String, "plus_session_id": String,
"cal_sync_room_location": String, "cal_sync_room_location": String, "cal_sync_show_exams": int,
"cal_sync_show_exams": int, "cal_sync_show_teacher": int, "cal_sync_renamed": int,
"cal_sync_show_teacher": int,
"cal_sync_renamed": int,
"calendar_id": String, "calendar_id": String,
"nav_shadow": int,
}); });
// DON'T FORGET TO UPDATE DEFAULT VALUES IN `initDB` MIGRATION OR ELSE PARENTS WILL COMPLAIN ABOUT THEIR CHILDREN MISSING // DON'T FORGET TO UPDATE DEFAULT VALUES IN `initDB` MIGRATION OR ELSE PARENTS WILL COMPLAIN ABOUT THEIR CHILDREN MISSING
// YOU'VE BEEN WARNED!!! // YOU'VE BEEN WARNED!!!

View File

@ -98,6 +98,7 @@ class SettingsProvider extends ChangeNotifier {
bool _calSyncShowTeacher; bool _calSyncShowTeacher;
bool _calSyncRenamed; bool _calSyncRenamed;
String _calendarId; String _calendarId;
bool _navShadow;
SettingsProvider({ SettingsProvider({
DatabaseProvider? database, DatabaseProvider? database,
@ -161,6 +162,7 @@ class SettingsProvider extends ChangeNotifier {
required bool calSyncShowTeacher, required bool calSyncShowTeacher,
required bool calSyncRenamed, required bool calSyncRenamed,
required String calendarId, required String calendarId,
required bool navShadow,
}) : _database = database, }) : _database = database,
_language = language, _language = language,
_startPage = startPage, _startPage = startPage,
@ -221,7 +223,8 @@ class SettingsProvider extends ChangeNotifier {
_calSyncShowExams = calSyncShowExams, _calSyncShowExams = calSyncShowExams,
_calSyncShowTeacher = calSyncShowTeacher, _calSyncShowTeacher = calSyncShowTeacher,
_calSyncRenamed = calSyncRenamed, _calSyncRenamed = calSyncRenamed,
_calendarId = calendarId; _calendarId = calendarId,
_navShadow = navShadow;
factory SettingsProvider.fromMap(Map map, factory SettingsProvider.fromMap(Map map,
{required DatabaseProvider database}) { {required DatabaseProvider database}) {
@ -302,6 +305,7 @@ class SettingsProvider extends ChangeNotifier {
calSyncShowTeacher: map['cal_sync_show_teacher'] == 1, calSyncShowTeacher: map['cal_sync_show_teacher'] == 1,
calSyncRenamed: map['cal_sync_renamed'] == 1, calSyncRenamed: map['cal_sync_renamed'] == 1,
calendarId: map['calendar_id'], calendarId: map['calendar_id'],
navShadow: map['nav_shadow'] == 1,
); );
} }
@ -370,6 +374,7 @@ class SettingsProvider extends ChangeNotifier {
"cal_sync_show_teacher": _calSyncShowTeacher ? 1 : 0, "cal_sync_show_teacher": _calSyncShowTeacher ? 1 : 0,
"cal_sync_renamed": _calSyncRenamed ? 1 : 0, "cal_sync_renamed": _calSyncRenamed ? 1 : 0,
"calendar_id": _calendarId, "calendar_id": _calendarId,
"nav_shadow": _navShadow ? 1 : 0,
}; };
} }
@ -442,6 +447,7 @@ class SettingsProvider extends ChangeNotifier {
calSyncShowTeacher: true, calSyncShowTeacher: true,
calSyncRenamed: false, calSyncRenamed: false,
calendarId: '', calendarId: '',
navShadow: true,
); );
} }
@ -505,6 +511,7 @@ class SettingsProvider extends ChangeNotifier {
bool get calSyncShowTeacher => _calSyncShowTeacher; bool get calSyncShowTeacher => _calSyncShowTeacher;
bool get calSyncRenamed => _calSyncRenamed; bool get calSyncRenamed => _calSyncRenamed;
String get calendarId => _calendarId; String get calendarId => _calendarId;
bool get navShadow => _navShadow;
Future<void> update({ Future<void> update({
bool store = true, bool store = true,
@ -564,6 +571,7 @@ class SettingsProvider extends ChangeNotifier {
bool? calSyncShowTeacher, bool? calSyncShowTeacher,
bool? calSyncRenamed, bool? calSyncRenamed,
String? calendarId, String? calendarId,
bool? navShadow,
}) async { }) async {
if (language != null && language != _language) _language = language; if (language != null && language != _language) _language = language;
if (startPage != null && startPage != _startPage) _startPage = startPage; if (startPage != null && startPage != _startPage) _startPage = startPage;
@ -731,6 +739,9 @@ class SettingsProvider extends ChangeNotifier {
if (calendarId != null && calendarId != _calendarId) { if (calendarId != null && calendarId != _calendarId) {
_calendarId = calendarId; _calendarId = calendarId;
} }
if (navShadow != null && navShadow != _navShadow) {
_navShadow = navShadow;
}
// store or not // store or not
if (store) await _database?.store.storeSettings(this); if (store) await _database?.store.storeSettings(this);
notifyListeners(); notifyListeners();

View File

@ -96,6 +96,7 @@ flutter:
- assets/images/subject_covers/ - assets/images/subject_covers/
- assets/launch_icons/ - assets/launch_icons/
- assets/images/ext_logo/ - assets/images/ext_logo/
- assets/svg/menu_icons/
fonts: fonts:
- family: FilcIcons - family: FilcIcons

View File

@ -1,3 +1,5 @@
import 'package:flutter/widgets.dart';
import 'package:flutter_svg/svg.dart';
import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/api/providers/update_provider.dart';
import 'package:refilc/helpers/quick_actions.dart'; import 'package:refilc/helpers/quick_actions.dart';
import 'package:refilc/models/settings.dart'; import 'package:refilc/models/settings.dart';
@ -234,6 +236,9 @@ class NavigationScreenState extends State<NavigationScreen>
_navigatorState.currentState?.pushReplacementNamed(page); _navigatorState.currentState?.pushReplacementNamed(page);
}); });
// SvgTheme navIcTheme =
// SvgTheme(currentColor: Theme.of(context).colorScheme.primary);
// ignore: deprecated_member_use // ignore: deprecated_member_use
return WillPopScope( return WillPopScope(
onWillPop: () async { onWillPop: () async {
@ -255,6 +260,7 @@ class NavigationScreenState extends State<NavigationScreen>
child: Scaffold( child: Scaffold(
body: Column( body: Column(
children: [ children: [
// actual page
Expanded( Expanded(
child: Stack( child: Stack(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
@ -269,6 +275,31 @@ class NavigationScreenState extends State<NavigationScreen>
), ),
), ),
// navbar
Container(
decoration: settings.navShadow
? BoxDecoration(
boxShadow: [
BoxShadow(
color: Theme.of(context).scaffoldBackgroundColor,
offset: const Offset(0, -4),
blurRadius: 14,
spreadRadius: 18,
),
],
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: const [0.0, 0.175],
colors: [
Theme.of(context).scaffoldBackgroundColor,
Theme.of(context).scaffoldBackgroundColor,
],
),
)
: null,
child: Column(
children: [
// Status bar // Status bar
Material( Material(
color: Theme.of(context).colorScheme.background, color: Theme.of(context).colorScheme.background,
@ -287,8 +318,52 @@ class NavigationScreenState extends State<NavigationScreen>
items: [ items: [
NavItem( NavItem(
title: "home".i18n, title: "home".i18n,
icon: const Icon(FilcIcons.home), icon: Stack(
activeIcon: const Icon(FilcIcons.homefill), alignment: AlignmentDirectional.center,
children: [
SvgPicture.asset(
'assets/svg/menu_icons/today.svg',
color:
Theme.of(context).colorScheme.secondary,
height: 24,
),
Transform.translate(
offset: const Offset(0, 1.6),
child: Text(
DateTime.now().day.toString(),
style: TextStyle(
color: Theme.of(context)
.colorScheme
.secondary,
fontWeight: FontWeight.w500,
),
),
),
],
),
activeIcon: Stack(
alignment: AlignmentDirectional.center,
children: [
SvgPicture.asset(
'assets/svg/menu_icons/today_selected.svg',
color:
Theme.of(context).colorScheme.secondary,
height: 24,
),
Transform.translate(
offset: const Offset(0, 1.8),
child: Text(
DateTime.now().day.toString(),
style: TextStyle(
color: Theme.of(context)
.colorScheme
.background,
fontWeight: FontWeight.w500,
),
),
),
],
),
), ),
NavItem( NavItem(
title: "grades".i18n, title: "grades".i18n,
@ -317,6 +392,9 @@ class NavigationScreenState extends State<NavigationScreen>
], ],
), ),
), ),
],
),
),
); );
} }