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 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 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 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()) ), ), ], ); } }