Commit 2c0e502
Changed files (6)
lib/l10n/app_en.arb
@@ -405,5 +405,9 @@
"exportPdfExportStatistics": "Statistics",
"@exportPdfExportStatistics": {},
"exportPdfExportData": "Data table",
- "@exportPdfExportData": {}
+ "@exportPdfExportData": {},
+ "startWithAddMeasurementPage": "Measurement on launch",
+ "@startWithAddMeasurementPage": {},
+ "startWithAddMeasurementPageDescription": "Upon app launch, measurement input screen shown.",
+ "@startWithAddMeasurementPageDescription": {}
}
lib/model/ram_only_implementations.dart
@@ -468,6 +468,19 @@ class RamSettings extends ChangeNotifier implements Settings {
notifyListeners();
}
+ bool _startWithAddMeasurementPage = false;
+
+ @override
+ bool get startWithAddMeasurementPage {
+ return _startWithAddMeasurementPage;
+ }
+
+ @override
+ set startWithAddMeasurementPage(bool value) {
+ _startWithAddMeasurementPage = value;
+ notifyListeners();
+ }
+
@override
void changeStepSize(TimeStep value) {
graphStepSize = value;
lib/model/settings_store.dart
@@ -577,6 +577,15 @@ class Settings extends ChangeNotifier {
_prefs.setBool('exportPdfExportData', value);
notifyListeners();
}
+
+ bool get startWithAddMeasurementPage {
+ return _prefs.getBool('startWithAddMeasurementPage') ?? false;
+ }
+
+ set startWithAddMeasurementPage(bool value) {
+ _prefs.setBool('startWithAddMeasurementPage', value);
+ notifyListeners();
+ }
}
enum TimeStep {
lib/screens/home.dart
@@ -5,9 +5,14 @@ import 'package:blood_pressure_app/screens/add_measurement.dart';
import 'package:blood_pressure_app/screens/settings.dart';
import 'package:blood_pressure_app/screens/statistics.dart';
import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
+/// The only use of this variable is to avoid loading the AddMeasurementPage twice,
+/// when startWithAddMeasurementPage is active
+bool _appStart = true;
+
class AppHome extends StatelessWidget {
const AppHome({super.key});
@@ -20,6 +25,14 @@ class AppHome extends StatelessWidget {
padding = const EdgeInsets.all(80);
}
+ // direct use of settings possible as no listening is required
+ if (_appStart && Provider.of<Settings>(context, listen: false).startWithAddMeasurementPage) {
+ SchedulerBinding.instance.addPostFrameCallback((_) {
+ Navigator.of(context).push(MaterialPageRoute(builder: (context) => const AddMeasurementPage()));
+ });
+ }
+ _appStart = false;
+
return Scaffold(
body: OrientationBuilder(
builder: (context, orientation) {
lib/screens/settings.dart
@@ -245,13 +245,22 @@ class SettingsPage extends StatelessWidget {
}
),
SwitchSettingsTile(
- title: Text(AppLocalizations.of(context)!.drawRegressionLines),
- leading: const Icon(Icons.trending_down_outlined),
- description: Text(AppLocalizations.of(context)!.drawRegressionLinesDesc),
- initialValue: settings.drawRegressionLines,
- onToggle: (value) {
- settings.drawRegressionLines = value;
- }
+ title: Text(AppLocalizations.of(context)!.drawRegressionLines),
+ leading: const Icon(Icons.trending_down_outlined),
+ description: Text(AppLocalizations.of(context)!.drawRegressionLinesDesc),
+ initialValue: settings.drawRegressionLines,
+ onToggle: (value) {
+ settings.drawRegressionLines = value;
+ }
+ ),
+ SwitchSettingsTile(
+ title: Text(AppLocalizations.of(context)!.startWithAddMeasurementPage),
+ description: Text(AppLocalizations.of(context)!.startWithAddMeasurementPageDescription),
+ leading: const Icon(Icons.electric_bolt_outlined),
+ initialValue: settings.startWithAddMeasurementPage,
+ onToggle: (value) {
+ settings.startWithAddMeasurementPage = value;
+ }
),
]),
SettingsSection(
lib/main.dart
@@ -28,14 +28,7 @@ class AppRoot extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<Settings>(builder: (context, settings, child) {
- late final ThemeMode mode;
- if (settings.followSystemDarkMode) {
- mode = ThemeMode.system;
- } else if (settings.darkMode) {
- mode = ThemeMode.dark;
- } else {
- mode = ThemeMode.light;
- }
+ final mode = getMode(settings);
return MaterialApp(
title: 'Blood Pressure App',
@@ -67,4 +60,14 @@ class AppRoot extends StatelessWidget {
);
});
}
+
+ ThemeMode getMode(Settings settings) {
+ if (settings.followSystemDarkMode) {
+ return ThemeMode.system;
+ } else if (settings.darkMode) {
+ return ThemeMode.dark;
+ } else {
+ return ThemeMode.light;
+ }
+ }
}