Made timetable zoom persistent

This commit is contained in:
Elias Müller 2023-06-04 00:44:24 +02:00
parent 187d7bfa36
commit f2505f17cf
6 changed files with 48 additions and 2 deletions

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import '../gradeAverages/gradeAveragesSettings.dart'; import '../gradeAverages/gradeAveragesSettings.dart';
import '../timetable/timetableSettings.dart';
part 'settings.g.dart'; part 'settings.g.dart';
@ -15,11 +16,13 @@ class Settings {
bool devToolsEnabled; bool devToolsEnabled;
GradeAveragesSettings gradeAveragesSettings; GradeAveragesSettings gradeAveragesSettings;
TimetableSettings timetableSettings;
Settings({ Settings({
required this.appTheme, required this.appTheme,
required this.devToolsEnabled, required this.devToolsEnabled,
required this.gradeAveragesSettings required this.gradeAveragesSettings,
required this.timetableSettings
}); });
static String _themeToJson(ThemeMode m) => m.name; static String _themeToJson(ThemeMode m) => m.name;

View File

@ -11,10 +11,13 @@ Settings _$SettingsFromJson(Map<String, dynamic> json) => Settings(
devToolsEnabled: json['devToolsEnabled'] as bool, devToolsEnabled: json['devToolsEnabled'] as bool,
gradeAveragesSettings: GradeAveragesSettings.fromJson( gradeAveragesSettings: GradeAveragesSettings.fromJson(
json['gradeAveragesSettings'] as Map<String, dynamic>), json['gradeAveragesSettings'] as Map<String, dynamic>),
timetableSettings: TimetableSettings.fromJson(
json['timetableSettings'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$SettingsToJson(Settings instance) => <String, dynamic>{ Map<String, dynamic> _$SettingsToJson(Settings instance) => <String, dynamic>{
'appTheme': Settings._themeToJson(instance.appTheme), 'appTheme': Settings._themeToJson(instance.appTheme),
'devToolsEnabled': instance.devToolsEnabled, 'devToolsEnabled': instance.devToolsEnabled,
'gradeAveragesSettings': instance.gradeAveragesSettings.toJson(), 'gradeAveragesSettings': instance.gradeAveragesSettings.toJson(),
'timetableSettings': instance.timetableSettings.toJson(),
}; };

View File

@ -2,6 +2,7 @@ import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:marianum_mobile/storage/gradeAverages/gradeAveragesSettings.dart'; import 'package:marianum_mobile/storage/gradeAverages/gradeAveragesSettings.dart';
import 'package:marianum_mobile/storage/timetable/timetableSettings.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'settings.dart'; import 'settings.dart';
@ -49,6 +50,9 @@ class SettingsProvider extends ChangeNotifier {
useGradeSystem: true, useGradeSystem: true,
inputs: [] inputs: []
), ),
timetableSettings: TimetableSettings(
zoom: 40,
),
); );
} }
} }

View File

@ -0,0 +1,13 @@
import 'package:json_annotation/json_annotation.dart';
part 'timetableSettings.g.dart';
@JsonSerializable()
class TimetableSettings {
double zoom;
TimetableSettings({required this.zoom});
factory TimetableSettings.fromJson(Map<String, dynamic> json) => _$TimetableSettingsFromJson(json);
Map<String, dynamic> toJson() => _$TimetableSettingsToJson(this);
}

View File

@ -0,0 +1,17 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'timetableSettings.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
TimetableSettings _$TimetableSettingsFromJson(Map<String, dynamic> json) =>
TimetableSettings(
zoom: (json['zoom'] as num).toDouble(),
);
Map<String, dynamic> _$TimetableSettingsToJson(TimetableSettings instance) =>
<String, dynamic>{
'zoom': instance.zoom,
};

View File

@ -2,6 +2,7 @@
import 'dart:developer'; import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:marianum_mobile/storage/base/settingsProvider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart'; import 'package:syncfusion_flutter_calendar/calendar.dart';
@ -28,8 +29,13 @@ class _TimetableState extends State<Timetable> {
double elementScale = 40; double elementScale = 40;
double baseElementScale = 40; double baseElementScale = 40;
late final SettingsProvider settings;
@override @override
void initState() { void initState() {
settings = Provider.of<SettingsProvider>(context, listen: false);
elementScale = baseElementScale = settings.val().timetableSettings.zoom;
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
Provider.of<TimetableProps>(context, listen: false).run(); Provider.of<TimetableProps>(context, listen: false).run();
}); });
@ -75,7 +81,7 @@ class _TimetableState extends State<Timetable> {
}); });
}, },
onScaleEnd: (details) { onScaleEnd: (details) {
// TODO save scale for later settings.val(write: true).timetableSettings.zoom = elementScale;
}, },
child: SfCalendar( child: SfCalendar(