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}