/* SPDX-License-Identifier: GPL-3.0-or-later */ /* Copyright (C) 2024 Marco Groß */ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:calorimeter/utils/app_drawer.dart'; import 'package:calorimeter/utils/settings_bloc.dart'; import 'package:settings_ui/settings_ui.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class SettingsWidget extends StatefulWidget { const SettingsWidget({super.key}); @override State createState() => _SettingsWidgetState(); } class _SettingsWidgetState extends State { var kcalPerDayCtrl = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( body: BlocBuilder( builder: (context, state) { return SettingsList(sections: [ SettingsSection( title: Text(AppLocalizations.of(context)!.yourSettings), tiles: [ SettingsTile.navigation( leading: const Icon(Icons.food_bank), title: Text(AppLocalizations.of(context)!.dayLimit), value: Text(state.kcalLimit.toString()), onPressed: (context) async { await showDialog( builder: (ctx) { return AlertDialog( title: Text(AppLocalizations.of(context)!.dayLimit), content: TextField( controller: kcalPerDayCtrl, onSubmitted: (val) => submitDailyKcal()), actions: [ TextButton( onPressed: () => submitDailyKcal(), child: Text(AppLocalizations.of(context)!.ok)) ], ); }, context: context); }), ], ), ]); }), drawer: const AppDrawer(), appBar: AppBar(title: Text(AppLocalizations.of(context)!.settings)), ); } void submitDailyKcal() { double setting; try { setting = double.parse(kcalPerDayCtrl.text); } catch (e) { setting = 2000.0; } context.read().add(DailyKcalLimitUpdated(kcal: setting)); Navigator.of(context).pop(); } }