Made timetable zoom persistent
This commit is contained in:
parent
187d7bfa36
commit
f2505f17cf
@ -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;
|
||||||
|
@ -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(),
|
||||||
};
|
};
|
||||||
|
@ -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,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
13
lib/storage/timetable/timetableSettings.dart
Normal file
13
lib/storage/timetable/timetableSettings.dart
Normal 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);
|
||||||
|
}
|
17
lib/storage/timetable/timetableSettings.g.dart
Normal file
17
lib/storage/timetable/timetableSettings.g.dart
Normal 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,
|
||||||
|
};
|
@ -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(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user