Files
HiddingselAppOriginal/lib/appflow/view/menu_pages/settings.dart
2026-02-13 15:53:22 +01:00

136 lines
4.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:hiddingsel_app/appflow/controller/events.dart';
import 'package:hiddingsel_app/constants/constant.dart';
import 'package:hiddingsel_app/appflow/model/event_organisations.dart';
import 'package:hiddingsel_app/appflow/model/represented_organisations.dart';
import 'package:hiddingsel_app/packages/list_view_extension/colum_extension.dart';
import 'package:hiddingsel_app/services/storage.dart';
import 'package:hiddingsel_app/packages/icon_switch/icon_switch.dart';
import '../navigation_drawer.dart';
import '../../model/topics.dart';
import '../widgets/time_picker.dart';
class SettingsView extends StatelessWidget with NavigationDrawerItem {
@override
String get title => 'Einstellungen';
@override
Widget build(BuildContext context) {
return ListView(
padding: EdgeInsets.all(UIShapes.paddingDouble),
children: [
buildNewsNotificationTile(RepresentedOrganisationModel.values),
//buildFavorizationTile(RepresentedOrganisationModel.values),
buildEventNotificationTile(EventOrganisationModel.values),
buildNotificationTimeTile(),
],
);
}
ExpansionTile buildNewsNotificationTile(List<PushNotificationTopicModel> topics) {
return ExpansionTile(
title: Text(
'News-Benachrichtigungen'.toUpperCase(),
style: UITheme.theme.textTheme.headlineSmall,
),
children: [
ColumnExtension.builder(
itemBuilder: (context, index) => ListTile(
leading: IconSwitch(
topics[index].subscribe,
initFavorite: topics[index].subscribed,
gradientColor:UIGradiants.yellow,
iconFavorite: Icons.notifications_active,
iconDefavorite: Icons.notifications_outlined,
),
title: Text(
topics[index].name.toUpperCase(),
style: UITheme.theme.textTheme.headlineSmall,
),
),
itemCount: topics.length,
),
],
);
}
/*
ExpansionTile buildFavorizationTile(
List<RepresentedOrganisationModel> organisations) {
return ExpansionTile(
title: Text(
'Favoriten bearbeiten'.toUpperCase(),
style: UITheme.theme.textTheme.headline5,
),
children: [
ColumnExtension.builder(
itemBuilder: (context, index) => ListTile(
leading: IconSwitch(
organisations[index].favorize,
initFavorite: organisations[index].favorized,
gradientColor: UIGradiants.yellow,
),
title: Text(
organisations[index].name.toUpperCase(),
style: UITheme.theme.textTheme.headline5,
),
),
itemCount: organisations.length,
),
],
);
}*/
ExpansionTile buildEventNotificationTile(
List<EventOrganisationModel> organisations) {
return ExpansionTile(
title: Text(
'Termin-Benachrichtigungen'.toUpperCase(),
style: UITheme.theme.textTheme.headlineSmall,
),
children: [
ColumnExtension.builder(
itemBuilder: (context, index) => ListTile(
leading: IconSwitch(
(b) => organisations[index].allowEventNotification(b),
initFavorite: organisations[index].eventNotificationAllowed,
gradientColor: UIGradiants.yellow,
iconFavorite: Icons.notifications_active,
iconDefavorite: Icons.calendar_today,
),
title: Text(
organisations[index].name.toUpperCase(),
style: UITheme.theme.textTheme.headlineSmall,
),
),
itemCount: organisations.length,
),
],
);
}
Widget buildNotificationTimeTile() {
return ExpansionTile(
title: Text(
'Benachrichtungszeit Termine'.toUpperCase(),
style: UITheme.theme.textTheme.headlineSmall,
),
children: [
LayoutBuilder(builder: (context, constraints) => FutureBuilder(
future: SettingsConnector.getInt(SystemStrings.keyAlertTime, 1*60*60*1000),
builder: (context, AsyncSnapshot snapshot) => HiddingselTimePicker(
Duration(milliseconds: snapshot.data??1*60*60*1000), (duration) async {
await SettingsConnector.setInt(SystemStrings.keyAlertTime, duration.inMilliseconds);
await EventController.scheduleNotificationsBySettings();
}, width: constraints.maxWidth, key: UniqueKey())
),
),
],
);
}
}