forked from firka/student-legacy
ahhhhhhh
This commit is contained in:
parent
6e23397905
commit
a435f56f2e
@ -1,24 +1,48 @@
|
|||||||
|
// ignore_for_file: use_build_context_synchronously
|
||||||
|
|
||||||
|
import 'package:filcnaplo/api/providers/database_provider.dart';
|
||||||
|
import 'package:filcnaplo/api/providers/user_provider.dart';
|
||||||
import 'package:filcnaplo/models/settings.dart';
|
import 'package:filcnaplo/models/settings.dart';
|
||||||
import 'package:filcnaplo/theme/colors/colors.dart';
|
import 'package:filcnaplo/theme/colors/colors.dart';
|
||||||
import 'package:filcnaplo/utils/format.dart';
|
import 'package:filcnaplo/utils/format.dart';
|
||||||
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:filcnaplo_kreta_api/models/teacher.dart';
|
||||||
|
import 'package:filcnaplo_kreta_api/providers/absence_provider.dart';
|
||||||
|
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
|
||||||
|
import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/common/panel/panel_button.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/common/splitted_panel/splitted_panel.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/screens/settings/settings_helper.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'edit_subject.i18n.dart';
|
||||||
|
|
||||||
class EditSubjectScreen extends StatefulWidget {
|
class EditSubjectScreen extends StatefulWidget {
|
||||||
const EditSubjectScreen({super.key, required this.subject});
|
const EditSubjectScreen(
|
||||||
|
{super.key, required this.subject, required this.teacher});
|
||||||
|
|
||||||
final GradeSubject subject;
|
final GradeSubject subject;
|
||||||
|
final Teacher teacher;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
EditSubjectScreenState createState() => EditSubjectScreenState();
|
EditSubjectScreenState createState() => EditSubjectScreenState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class EditSubjectScreenState extends State<EditSubjectScreen> {
|
class EditSubjectScreenState extends State<EditSubjectScreen> {
|
||||||
|
late SettingsProvider settingsProvider;
|
||||||
|
late DatabaseProvider databaseProvider;
|
||||||
|
late UserProvider user;
|
||||||
|
|
||||||
|
final _subjectName = TextEditingController();
|
||||||
|
final _teacherName = TextEditingController();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SettingsProvider settingsProvider = Provider.of<SettingsProvider>(context);
|
settingsProvider = Provider.of<SettingsProvider>(context);
|
||||||
|
databaseProvider = Provider.of<DatabaseProvider>(context);
|
||||||
|
user = Provider.of<UserProvider>(context);
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
@ -36,17 +60,331 @@ class EditSubjectScreenState extends State<EditSubjectScreen> {
|
|||||||
: FontStyle.normal,
|
: FontStyle.normal,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
actions: [
|
||||||
|
IconButton(
|
||||||
|
onPressed: () async {
|
||||||
|
Map<String, String> subs = await databaseProvider.userQuery
|
||||||
|
.renamedSubjects(userId: user.id!);
|
||||||
|
subs.remove(widget.subject.id);
|
||||||
|
databaseProvider.userStore
|
||||||
|
.storeRenamedSubjects(subs, userId: user.id!);
|
||||||
|
|
||||||
|
Map<String, String> teach = await databaseProvider.userQuery
|
||||||
|
.renamedTeachers(userId: user.id!);
|
||||||
|
teach.remove(widget.teacher.id);
|
||||||
|
databaseProvider.userStore
|
||||||
|
.storeRenamedTeachers(teach, userId: user.id!);
|
||||||
|
|
||||||
|
updateProviders();
|
||||||
|
|
||||||
|
setState(() {});
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
icon: const Icon(FeatherIcons.trash2),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
width: 8.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0),
|
padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
|
// rename subject
|
||||||
|
SplittedPanel(
|
||||||
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
|
cardPadding: const EdgeInsets.all(4.0),
|
||||||
|
isSeparated: true,
|
||||||
|
children: [
|
||||||
|
PanelButton(
|
||||||
|
onPressed: () {
|
||||||
|
showSubjectRenameDialog();
|
||||||
|
},
|
||||||
|
title: Text("rename_it".i18n),
|
||||||
|
leading: Icon(
|
||||||
|
FeatherIcons.penTool,
|
||||||
|
size: 22.0,
|
||||||
|
color: AppColors.of(context).text.withOpacity(0.95),
|
||||||
|
),
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(12.0),
|
||||||
|
bottom: Radius.circular(12.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
// rename teacher
|
||||||
|
SplittedPanel(
|
||||||
|
padding: const EdgeInsets.only(top: 9.0),
|
||||||
|
cardPadding: const EdgeInsets.all(4.0),
|
||||||
|
isSeparated: true,
|
||||||
|
children: [
|
||||||
|
PanelButton(
|
||||||
|
onPressed: () {
|
||||||
|
showTeacherRenameDialog();
|
||||||
|
},
|
||||||
|
title: Text("rename_te".i18n),
|
||||||
|
leading: Icon(
|
||||||
|
FeatherIcons.user,
|
||||||
|
size: 22.0,
|
||||||
|
color: AppColors.of(context).text.withOpacity(0.95),
|
||||||
|
),
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(12.0),
|
||||||
|
bottom: Radius.circular(12.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
// edit rounding
|
||||||
|
SplittedPanel(
|
||||||
|
padding: const EdgeInsets.only(top: 9.0),
|
||||||
|
cardPadding: const EdgeInsets.all(4.0),
|
||||||
|
isSeparated: true,
|
||||||
|
children: [
|
||||||
|
PanelButton(
|
||||||
|
onPressed: () {
|
||||||
|
SettingsHelper.rounding(context);
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
title: Text(
|
||||||
|
"rounding".i18n,
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.of(context).text.withOpacity(.95),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
leading: Icon(
|
||||||
|
FeatherIcons.gitCommit,
|
||||||
|
size: 22.0,
|
||||||
|
color: AppColors.of(context).text.withOpacity(.95),
|
||||||
|
),
|
||||||
|
trailing: Text(
|
||||||
|
(settingsProvider.rounding / 10).toStringAsFixed(1),
|
||||||
|
style: const TextStyle(fontSize: 14.0),
|
||||||
|
),
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(12.0),
|
||||||
|
bottom: Radius.circular(12.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rename dialogs
|
||||||
|
void showSubjectRenameDialog() {
|
||||||
|
_subjectName.text = widget.subject.renamedTo ?? '';
|
||||||
|
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (context) => StatefulBuilder(builder: (context, setS) {
|
||||||
|
return AlertDialog(
|
||||||
|
shape: const RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(14.0))),
|
||||||
|
title: Text("rename_subject".i18n),
|
||||||
|
content: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).colorScheme.background,
|
||||||
|
borderRadius:
|
||||||
|
const BorderRadius.all(Radius.circular(12.0))),
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 10.0),
|
||||||
|
child: Center(
|
||||||
|
child: Text(
|
||||||
|
widget.subject.name,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontWeight: FontWeight.w500, fontSize: 16.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Padding(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||||
|
child: Icon(FeatherIcons.arrowDown, size: 32),
|
||||||
|
),
|
||||||
|
TextField(
|
||||||
|
controller: _subjectName,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: OutlineInputBorder(
|
||||||
|
borderSide:
|
||||||
|
const BorderSide(color: Colors.grey, width: 1.5),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
focusedBorder: OutlineInputBorder(
|
||||||
|
borderSide:
|
||||||
|
const BorderSide(color: Colors.grey, width: 1.5),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
contentPadding: const EdgeInsets.symmetric(horizontal: 12.0),
|
||||||
|
hintText: "modified_name".i18n,
|
||||||
|
suffixIcon: IconButton(
|
||||||
|
icon: const Icon(
|
||||||
|
FeatherIcons.x,
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
setState(() {
|
||||||
|
_subjectName.text = "";
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
child: Text(
|
||||||
|
"cancel".i18n,
|
||||||
|
style: const TextStyle(fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).maybePop();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
child: Text(
|
||||||
|
"done".i18n,
|
||||||
|
style: const TextStyle(fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
onPressed: () async {
|
||||||
|
Map<String, String> renamedSubjs = await databaseProvider
|
||||||
|
.userQuery
|
||||||
|
.renamedSubjects(userId: user.id!);
|
||||||
|
|
||||||
|
renamedSubjs[widget.subject.id] = _subjectName.text;
|
||||||
|
|
||||||
|
await databaseProvider.userStore
|
||||||
|
.storeRenamedSubjects(renamedSubjs, userId: user.id!);
|
||||||
|
|
||||||
|
updateProviders();
|
||||||
|
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
).then((val) {
|
||||||
|
_subjectName.text = "";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void showTeacherRenameDialog() {
|
||||||
|
_teacherName.text = widget.teacher.renamedTo ?? '';
|
||||||
|
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (context) => StatefulBuilder(builder: (context, setS) {
|
||||||
|
return AlertDialog(
|
||||||
|
shape: const RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(14.0))),
|
||||||
|
title: Text("rename_teacher".i18n),
|
||||||
|
content: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).colorScheme.background,
|
||||||
|
borderRadius:
|
||||||
|
const BorderRadius.all(Radius.circular(12.0))),
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 10.0),
|
||||||
|
child: Center(
|
||||||
|
child: Text(
|
||||||
|
widget.teacher.name,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontWeight: FontWeight.w500, fontSize: 16.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Padding(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||||
|
child: Icon(FeatherIcons.arrowDown, size: 32),
|
||||||
|
),
|
||||||
|
TextField(
|
||||||
|
controller: _teacherName,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: OutlineInputBorder(
|
||||||
|
borderSide:
|
||||||
|
const BorderSide(color: Colors.grey, width: 1.5),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
focusedBorder: OutlineInputBorder(
|
||||||
|
borderSide:
|
||||||
|
const BorderSide(color: Colors.grey, width: 1.5),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
contentPadding: const EdgeInsets.symmetric(horizontal: 12.0),
|
||||||
|
hintText: "modified_name".i18n,
|
||||||
|
suffixIcon: IconButton(
|
||||||
|
icon: const Icon(
|
||||||
|
FeatherIcons.x,
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
setState(() {
|
||||||
|
_teacherName.text = "";
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
child: Text(
|
||||||
|
"cancel".i18n,
|
||||||
|
style: const TextStyle(fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).maybePop();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
child: Text(
|
||||||
|
"done".i18n,
|
||||||
|
style: const TextStyle(fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
onPressed: () async {
|
||||||
|
Map<String, String> renamedTeach = await databaseProvider
|
||||||
|
.userQuery
|
||||||
|
.renamedTeachers(userId: user.id!);
|
||||||
|
|
||||||
|
renamedTeach[widget.teacher.id] = _teacherName.text;
|
||||||
|
|
||||||
|
await databaseProvider.userStore
|
||||||
|
.storeRenamedTeachers(renamedTeach, userId: user.id!);
|
||||||
|
|
||||||
|
updateProviders();
|
||||||
|
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
).then((val) {
|
||||||
|
_teacherName.text = "";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateProviders() async {
|
||||||
|
await Provider.of<GradeProvider>(context, listen: false)
|
||||||
|
.convertBySettings();
|
||||||
|
await Provider.of<TimetableProvider>(context, listen: false)
|
||||||
|
.convertBySettings();
|
||||||
|
await Provider.of<AbsenceProvider>(context, listen: false)
|
||||||
|
.convertBySettings();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
import 'package:i18n_extension/i18n_extension.dart';
|
||||||
|
|
||||||
|
extension SettingsLocalization on String {
|
||||||
|
static final _t = Translations.byLocale("hu_hu") +
|
||||||
|
{
|
||||||
|
"en_en": {
|
||||||
|
"rename_it": "Rename Subject",
|
||||||
|
"rename_te": "Rename Teacher",
|
||||||
|
"rounding": "Rounding",
|
||||||
|
"gs_mode": "Good Student Mode",
|
||||||
|
"rename_subject": "Rename Subject",
|
||||||
|
"modified_name": "Modified Name",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"done": "Done",
|
||||||
|
},
|
||||||
|
"hu_hu": {
|
||||||
|
"rename_it": "Tantárgy átnevezése",
|
||||||
|
"rename_te": "Tanár átnevezése",
|
||||||
|
"rounding": "Kerekítés",
|
||||||
|
"gs_mode": "Jó tanuló mód",
|
||||||
|
"rename_subject": "Tantárgy átnevezése",
|
||||||
|
"modified_name": "Módosított név",
|
||||||
|
"cancel": "Mégse",
|
||||||
|
"done": "Kész",
|
||||||
|
},
|
||||||
|
"de_de": {
|
||||||
|
"rename_it": "Betreff umbenennen",
|
||||||
|
"rename_te": "Lehrer umbenennen",
|
||||||
|
"rounding": "Rundung",
|
||||||
|
"gs_mode": "Guter Student Modus",
|
||||||
|
"rename_subject": "Fach umbenennen",
|
||||||
|
"modified_name": "Geänderter Name",
|
||||||
|
"cancel": "Abbrechen",
|
||||||
|
"done": "Erledigt",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
String get i18n => localize(this, _t);
|
||||||
|
String fill(List<Object> params) => localizeFill(this, params);
|
||||||
|
String plural(int value) => localizePlural(value, this, _t);
|
||||||
|
String version(Object modifier) => localizeVersion(modifier, this, _t);
|
||||||
|
}
|
@ -5,7 +5,7 @@ import 'package:filcnaplo/helpers/subject.dart';
|
|||||||
import 'package:filcnaplo/models/settings.dart';
|
import 'package:filcnaplo/models/settings.dart';
|
||||||
import 'package:filcnaplo/theme/colors/colors.dart';
|
import 'package:filcnaplo/theme/colors/colors.dart';
|
||||||
import 'package:filcnaplo/utils/format.dart';
|
import 'package:filcnaplo/utils/format.dart';
|
||||||
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
import 'package:filcnaplo_kreta_api/models/grade.dart';
|
||||||
import 'package:filcnaplo_kreta_api/providers/absence_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/absence_provider.dart';
|
||||||
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
|
||||||
import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart';
|
||||||
@ -65,8 +65,8 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
|
|
||||||
late AnimationController _hideContainersController;
|
late AnimationController _hideContainersController;
|
||||||
|
|
||||||
late List<GradeSubject> editedSubjects;
|
late List<Grade> editedShit;
|
||||||
late List<GradeSubject> otherSubjects;
|
late List<Grade> otherShit;
|
||||||
|
|
||||||
late List<Widget> tiles;
|
late List<Widget> tiles;
|
||||||
|
|
||||||
@ -74,21 +74,49 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
editedSubjects = Provider.of<GradeProvider>(context, listen: false)
|
editedShit = Provider.of<GradeProvider>(context, listen: false)
|
||||||
.grades
|
.grades
|
||||||
.where((e) => e.teacher.isRenamed || e.subject.isRenamed)
|
.where((e) => e.teacher.isRenamed || e.subject.isRenamed)
|
||||||
.map((e) => e.subject)
|
// .map((e) => e.subject)
|
||||||
.toSet()
|
.toSet()
|
||||||
.toList()
|
.toList()
|
||||||
..sort((a, b) => a.name.compareTo(b.name));
|
..sort((a, b) => a.subject.name.compareTo(b.subject.name));
|
||||||
|
|
||||||
otherSubjects = Provider.of<GradeProvider>(context, listen: false)
|
List<Grade> other = Provider.of<GradeProvider>(context, listen: false)
|
||||||
.grades
|
.grades
|
||||||
.where((e) => !e.teacher.isRenamed && !e.subject.isRenamed)
|
.where((e) => !e.teacher.isRenamed && !e.subject.isRenamed)
|
||||||
.map((e) => e.subject)
|
|
||||||
.toSet()
|
.toSet()
|
||||||
.toList()
|
.toList()
|
||||||
..sort((a, b) => a.name.compareTo(b.name));
|
..sort((a, b) => a.subject.name.compareTo(b.subject.name));
|
||||||
|
|
||||||
|
otherShit = [];
|
||||||
|
var addedOthers = [];
|
||||||
|
|
||||||
|
for (var e in other) {
|
||||||
|
if (addedOthers.contains(e.subject.id)) continue;
|
||||||
|
addedOthers.add(e.subject.id);
|
||||||
|
|
||||||
|
otherShit.add(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
otherShit = otherShit
|
||||||
|
..sort((a, b) =>
|
||||||
|
a.subject.name.compareTo(b.subject.name)); // just cuz why not
|
||||||
|
|
||||||
|
// editedTeachers = Provider.of<GradeProvider>(context, listen: false)
|
||||||
|
// .grades
|
||||||
|
// .where((e) => e.teacher.isRenamed || e.subject.isRenamed)
|
||||||
|
// .map((e) => e.teacher)
|
||||||
|
// .toSet()
|
||||||
|
// .toList();
|
||||||
|
// // ..sort((a, b) => a.name.compareTo(b.name));
|
||||||
|
// otherTeachers = Provider.of<GradeProvider>(context, listen: false)
|
||||||
|
// .grades
|
||||||
|
// .where((e) => !e.teacher.isRenamed && !e.subject.isRenamed)
|
||||||
|
// .map((e) => e.teacher)
|
||||||
|
// .toSet()
|
||||||
|
// .toList();
|
||||||
|
// ..sort((a, b) => a.name.compareTo(b.name));
|
||||||
|
|
||||||
_hideContainersController = AnimationController(
|
_hideContainersController = AnimationController(
|
||||||
vsync: this, duration: const Duration(milliseconds: 200));
|
vsync: this, duration: const Duration(milliseconds: 200));
|
||||||
@ -97,19 +125,25 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
void buildSubjectTiles() {
|
void buildSubjectTiles() {
|
||||||
List<Widget> subjectTiles = [];
|
List<Widget> subjectTiles = [];
|
||||||
|
|
||||||
|
var added = [];
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
|
||||||
for (var s in editedSubjects) {
|
for (var s in editedShit) {
|
||||||
|
if (added.contains(s.subject.id)) continue;
|
||||||
|
|
||||||
Widget widget = PanelButton(
|
Widget widget = PanelButton(
|
||||||
onPressed: () => Navigator.of(context, rootNavigator: true).push(
|
onPressed: () => Navigator.of(context, rootNavigator: true).push(
|
||||||
CupertinoPageRoute(
|
CupertinoPageRoute(
|
||||||
builder: (context) => EditSubjectScreen(subject: s),
|
builder: (context) => EditSubjectScreen(
|
||||||
|
subject: s.subject,
|
||||||
|
teacher: s.teacher, // not sure why, but it works tho
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
(s.isRenamed && settingsProvider.renamedSubjectsEnabled
|
(s.subject.isRenamed && settingsProvider.renamedSubjectsEnabled
|
||||||
? s.renamedTo
|
? s.subject.renamedTo
|
||||||
: s.name.capital()) ??
|
: s.subject.name.capital()) ??
|
||||||
'',
|
'',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: AppColors.of(context).text.withOpacity(.95),
|
color: AppColors.of(context).text.withOpacity(.95),
|
||||||
@ -119,7 +153,7 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
leading: Icon(
|
leading: Icon(
|
||||||
SubjectIcon.resolveVariant(context: context, subject: s),
|
SubjectIcon.resolveVariant(context: context, subject: s.subject),
|
||||||
size: 22.0,
|
size: 22.0,
|
||||||
color: AppColors.of(context).text.withOpacity(.95),
|
color: AppColors.of(context).text.withOpacity(.95),
|
||||||
),
|
),
|
||||||
@ -130,12 +164,13 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
),
|
),
|
||||||
borderRadius: BorderRadius.vertical(
|
borderRadius: BorderRadius.vertical(
|
||||||
top: Radius.circular(i == 0 ? 12.0 : 4.0),
|
top: Radius.circular(i == 0 ? 12.0 : 4.0),
|
||||||
bottom: Radius.circular(i + 1 == editedSubjects.length ? 12.0 : 4.0),
|
bottom: Radius.circular(i + 1 == editedShit.length ? 12.0 : 4.0),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
i += 1;
|
i += 1;
|
||||||
subjectTiles.add(widget);
|
subjectTiles.add(widget);
|
||||||
|
added.add(s.subject.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
tiles = subjectTiles;
|
tiles = subjectTiles;
|
||||||
@ -468,11 +503,11 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
isTransparent: true,
|
isTransparent: true,
|
||||||
children: [
|
children: [
|
||||||
DropdownButton2(
|
DropdownButton2(
|
||||||
items: otherSubjects
|
items: otherShit
|
||||||
.map((item) => DropdownMenuItem<String>(
|
.map((item) => DropdownMenuItem<String>(
|
||||||
value: item.id,
|
value: item.subject.id,
|
||||||
child: Text(
|
child: Text(
|
||||||
item.name,
|
item.subject.name,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
@ -486,8 +521,12 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
|
|||||||
Navigator.of(context, rootNavigator: true).push(
|
Navigator.of(context, rootNavigator: true).push(
|
||||||
CupertinoPageRoute(
|
CupertinoPageRoute(
|
||||||
builder: (context) => EditSubjectScreen(
|
builder: (context) => EditSubjectScreen(
|
||||||
subject:
|
subject: otherShit
|
||||||
otherSubjects.firstWhere((e) => e.id == v),
|
.firstWhere((e) => e.subject.id == v)
|
||||||
|
.subject,
|
||||||
|
teacher: otherShit
|
||||||
|
.firstWhere((e) => e.subject.id == v)
|
||||||
|
.teacher,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user