136 lines
4.7 KiB
Dart
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())
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|