main
1import 'package:blood_pressure_app/components/custom_banner.dart';
2import 'package:blood_pressure_app/components/input_dialoge.dart';
3import 'package:blood_pressure_app/features/settings/tiles/number_input_list_tile.dart';
4import 'package:blood_pressure_app/l10n/app_localizations.dart';
5import 'package:blood_pressure_app/model/blood_pressure/warn_values.dart';
6import 'package:blood_pressure_app/model/storage/settings_store.dart';
7import 'package:flutter/material.dart';
8import 'package:flutter_bloc/flutter_bloc.dart';
9import 'package:url_launcher/url_launcher.dart';
10
11/// Screen containing warn value related information and settings.
12class ConfigureWarnValuesScreen extends StatelessWidget {
13 /// Create screen containing warn value related information and settings.
14 const ConfigureWarnValuesScreen({super.key});
15
16 @override
17 Widget build(BuildContext context) {
18 final settings = context.watch<Settings>();
19 return Scaffold(
20 appBar: AppBar(forceMaterialTransparency: true),
21 floatingActionButton: FloatingActionButton.extended(
22 label: Text(AppLocalizations.of(context)!.determineWarnValues),
23 onPressed:() async {
24 final age = (await showNumberInputDialoge(context,
25 hintText: AppLocalizations.of(context)!.age,
26 ))?.round();
27 if (age != null) {
28 settings.sysWarn = BloodPressureWarnValues.getUpperSysWarnValue(age);
29 settings.diaWarn = BloodPressureWarnValues.getUpperDiaWarnValue(age);
30 }
31 },
32 ),
33 body: ListView(
34 //mainAxisAlignment: MainAxisAlignment.start,
35 //crossAxisAlignment: CrossAxisAlignment.start,
36 //crossAxisAlignment: CrossAxisAlignment.start,
37 //crossAxisAlignment: CrossAxisAlignment.start,
38 children: [
39 CustomBanner(
40 content: Column(children: [
41 Text(AppLocalizations.of(context)!.warnAboutTxt1),
42 const SizedBox(
43 height: 5,
44 ),
45 InkWell(
46 onTap: () async {
47 final url = Uri.parse(BloodPressureWarnValues.source);
48 if (await canLaunchUrl(url)) {
49 await launchUrl(url, mode: LaunchMode.externalApplication);
50 } else if (context.mounted) {
51 ScaffoldMessenger.of(context).showSnackBar(SnackBar(
52 content: Text(AppLocalizations.of(context)!
53 .errCantOpenURL(BloodPressureWarnValues.source),),),);
54 }
55 },
56 child: SizedBox(
57 height: 48,
58 child: Center(
59 child: Text(
60 AppLocalizations.of(context)!.warnAboutTxt2,
61 style: const TextStyle(color: Colors.blue),
62 ),
63 ),
64 ),
65 ),
66 const SizedBox(
67 height: 5,
68 ),
69 Text(AppLocalizations.of(context)!.warnAboutTxt3),
70 const SizedBox(height: 10.0),
71 ],),
72 ),
73 NumberInputListTile(
74 label: AppLocalizations.of(context)!.sysWarn,
75 leading: const Icon(Icons.warning_amber_outlined),
76 value: settings.sysWarn,
77 onParsableSubmit: (double value) {
78 settings.sysWarn = value.round();
79 },
80 ),
81 NumberInputListTile(
82 label: AppLocalizations.of(context)!.diaWarn,
83 leading: const Icon(Icons.warning_amber_outlined),
84 value: settings.diaWarn,
85 onParsableSubmit: (double value) {
86 settings.diaWarn = value.round();
87 },
88 ),
89 ],
90 ) ,
91 );
92 }
93
94}