Initial (redacted) commit.
This commit is contained in:
commit
655f8a036a
368 changed files with 20949 additions and 0 deletions
|
@ -0,0 +1,79 @@
|
|||
// ignore_for_file: public_member_api_docs
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:habitrack_app/function_widgets/widget_settings_menu/setting_entry.dart';
|
||||
|
||||
class WidgetSettingsData {
|
||||
WidgetSettingsData({required this.entries});
|
||||
|
||||
final Map<State, void Function(void Function())> listeners = {};
|
||||
final Map<String, SettingEntry> entries;
|
||||
|
||||
void addListener(State toAdd, void Function(void Function()) updateCall) {
|
||||
listeners[toAdd] = updateCall;
|
||||
}
|
||||
|
||||
void removeListener(State toRemove) {
|
||||
listeners.remove(toRemove);
|
||||
}
|
||||
|
||||
void notify() {
|
||||
for (final listener in listeners.keys) {
|
||||
listeners[listener]!(() => ());
|
||||
}
|
||||
}
|
||||
|
||||
dynamic getValue(String key) {
|
||||
return entries[key]?.getValue();
|
||||
}
|
||||
|
||||
void setValue(String key, dynamic value) {
|
||||
entries[key]?.setValue(value);
|
||||
notify();
|
||||
}
|
||||
|
||||
List<SettingEntry> asList() {
|
||||
return entries.values.toList();
|
||||
}
|
||||
}
|
||||
|
||||
class WidgetSettings extends StatefulWidget {
|
||||
const WidgetSettings({
|
||||
required this.entries,
|
||||
super.key,
|
||||
});
|
||||
|
||||
final WidgetSettingsData entries;
|
||||
|
||||
@override
|
||||
State<WidgetSettings> createState() => _WidgetSettingsState();
|
||||
}
|
||||
|
||||
class _WidgetSettingsState extends State<WidgetSettings> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
iconTheme: IconThemeData(
|
||||
color: Theme.of(context).colorScheme.onPrimaryContainer,),
|
||||
backgroundColor: Theme.of(context).colorScheme.primaryContainer,
|
||||
title: Text(
|
||||
AppLocalizations.of(context)!.settingsHeader,
|
||||
textScaler: const TextScaler.linear(1.5),
|
||||
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
|
||||
color: Theme.of(context).colorScheme.onPrimaryContainer,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 15,
|
||||
),
|
||||
),
|
||||
),
|
||||
body: ColoredBox(
|
||||
color: Theme.of(context).colorScheme.primaryContainer,
|
||||
child: ListView(
|
||||
children: widget.entries.asList(),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue