Commit ad2e734
Changed files (7)
lib
components
screens
test
lib/components/settings_widgets.dart
@@ -1,5 +1,4 @@
import 'package:blood_pressure_app/components/color_picker.dart';
-import 'package:blood_pressure_app/model/storage/convert_util.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -73,8 +72,8 @@ class SettingsTile extends StatelessWidget {
class ColorSelectionSettingsTile extends StatelessWidget {
final Widget title;
- final ValueChanged<MaterialColor>? onMainColorChanged;
- final MaterialColor initialColor;
+ final ValueChanged<Color>? onMainColorChanged;
+ final Color initialColor;
final Widget? trailing;
final Widget? description;
final bool disabled;
@@ -104,7 +103,7 @@ class ColorSelectionSettingsTile extends StatelessWidget {
description: description,
disabled: disabled,
onPressed: (context) async {
- final color = ConvertUtil.parseMaterialColor(await showColorPickerDialog(context, initialColor));
+ final color = await showColorPickerDialog(context, initialColor);
if (color != null) onMainColorChanged?.call(color);
},
);
lib/model/storage/convert_util.dart
@@ -56,36 +56,14 @@ class ConvertUtil {
return null;
}
- static MaterialColor? parseMaterialColor(dynamic value) {
- if (value is MaterialColor) return value;
+ static Color? parseColor(dynamic value) {
+ if (value is MaterialColor || value is Color) return value;
if (value == null) return null;
- late final Color color;
- if (value is Color) {
- color = value;
- } else if (parseInt(value) != null) {
- color = Color(parseInt(value)!);
- } else {
- return null;
+ if (parseInt(value) != null) {
+ return Color(parseInt(value)!);
}
-
- List strengths = <double>[.05];
- Map<int, Color> swatch = {};
- final int r = color.red, g = color.green, b = color.blue;
-
- for (int i = 1; i < 10; i++) {
- strengths.add(0.1 * i);
- }
- for (var strength in strengths) {
- final double ds = 0.5 - strength;
- swatch[(strength * 1000).round()] = Color.fromRGBO(
- r + ((ds < 0 ? r : (255 - r)) * ds).round(),
- g + ((ds < 0 ? g : (255 - g)) * ds).round(),
- b + ((ds < 0 ? b : (255 - b)) * ds).round(),
- 1,
- );
- }
- return MaterialColor(color.value, swatch);
+ return null;
}
static DateTimeRange? parseRange(dynamic start, dynamic end) {
lib/model/storage/settings_store.dart
@@ -24,10 +24,10 @@ class Settings extends ChangeNotifier {
/// When the values should be set consider using the factory methods.
Settings({
Locale? language,
- MaterialColor? accentColor,
- MaterialColor? sysColor,
- MaterialColor? diaColor,
- MaterialColor? pulColor,
+ Color? accentColor,
+ Color? sysColor,
+ Color? diaColor,
+ Color? pulColor,
List<HorizontalGraphLine>? horizontalGraphLines,
String? dateFormatString,
double? graphLineThickness,
@@ -67,10 +67,10 @@ class Settings extends ChangeNotifier {
}
factory Settings.fromMap(Map<String, dynamic> map) => Settings(
- accentColor: ConvertUtil.parseMaterialColor(map['accentColor']),
- sysColor: ConvertUtil.parseMaterialColor(map['sysColor']),
- diaColor: ConvertUtil.parseMaterialColor(map['diaColor']),
- pulColor: ConvertUtil.parseMaterialColor(map['pulColor']),
+ accentColor: ConvertUtil.parseColor(map['accentColor']),
+ sysColor: ConvertUtil.parseColor(map['sysColor']),
+ diaColor: ConvertUtil.parseColor(map['diaColor']),
+ pulColor: ConvertUtil.parseColor(map['pulColor']),
allowManualTimeInput: ConvertUtil.parseBool(map['allowManualTimeInput']),
confirmDeletion: ConvertUtil.parseBool(map['confirmDeletion']),
darkMode: ConvertUtil.parseBool(map['darkMode']),
@@ -133,30 +133,30 @@ class Settings extends ChangeNotifier {
notifyListeners();
}
- MaterialColor _accentColor = Colors.teal;
- MaterialColor get accentColor => _accentColor;
- set accentColor(MaterialColor newColor) {
+ Color _accentColor = Colors.teal;
+ Color get accentColor => _accentColor;
+ set accentColor(Color newColor) {
_accentColor = newColor;
notifyListeners();
}
- MaterialColor _sysColor = Colors.teal;
- MaterialColor get sysColor => _sysColor;
- set sysColor(MaterialColor newColor) {
+ Color _sysColor = Colors.teal;
+ Color get sysColor => _sysColor;
+ set sysColor(Color newColor) {
_sysColor = newColor;
notifyListeners();
}
- MaterialColor _diaColor = Colors.green;
- MaterialColor get diaColor => _diaColor;
- set diaColor(MaterialColor newColor) {
+ Color _diaColor = Colors.green;
+ Color get diaColor => _diaColor;
+ set diaColor(Color newColor) {
_diaColor = newColor;
notifyListeners();
}
- MaterialColor _pulColor = Colors.red;
- MaterialColor get pulColor => _pulColor;
- set pulColor(MaterialColor newColor) {
+ Color _pulColor = Colors.red;
+ Color get pulColor => _pulColor;
+ set pulColor(Color newColor) {
_pulColor = newColor;
notifyListeners();
}
lib/model/storage/update_legacy_settings.dart
@@ -2,7 +2,7 @@ import 'dart:convert';
import 'package:blood_pressure_app/model/blood_pressure.dart';
import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
-import 'package:blood_pressure_app/model/settings_store.dart';
+import 'package:blood_pressure_app/model/storage/convert_util.dart';
import 'package:blood_pressure_app/model/storage/export_csv_settings_store.dart';
import 'package:blood_pressure_app/model/storage/export_pdf_settings_store.dart';
import 'package:blood_pressure_app/model/storage/export_settings_store.dart';
@@ -59,16 +59,16 @@ Future<void> updateLegacySettings(Settings settings, ExportSettings exportSettin
settings.darkMode = sharedPreferences.getBool(key)!;
break;
case 'accentColor':
- settings.accentColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ settings.accentColor = ConvertUtil.parseColor(sharedPreferences.getInt(key)!)!;
break;
case 'diaColor':
- settings.diaColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ settings.diaColor = ConvertUtil.parseColor(sharedPreferences.getInt(key)!)!;
break;
case 'sysColor':
- settings.sysColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ settings.sysColor = ConvertUtil.parseColor(sharedPreferences.getInt(key)!)!;
break;
case 'pulColor':
- settings.pulColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ settings.pulColor = ConvertUtil.parseColor(sharedPreferences.getInt(key)!)!;
break;
case 'allowManualTimeInput':
settings.allowManualTimeInput = sharedPreferences.getBool(key)!;
lib/model/settings_store.dart
@@ -1,25 +0,0 @@
-import 'package:flutter/material.dart';
-
-// TODO: remove file
-
-@Deprecated('replaced by slightly different ConvertUtil.parseMaterialColor')
-MaterialColor createMaterialColor(int value) {
- final color = Color(value);
- List strengths = <double>[.05];
- Map<int, Color> swatch = {};
- final int r = color.red, g = color.green, b = color.blue;
-
- for (int i = 1; i < 10; i++) {
- strengths.add(0.1 * i);
- }
- for (var strength in strengths) {
- final double ds = 0.5 - strength;
- swatch[(strength * 1000).round()] = Color.fromRGBO(
- r + ((ds < 0 ? r : (255 - r)) * ds).round(),
- g + ((ds < 0 ? g : (255 - g)) * ds).round(),
- b + ((ds < 0 ? b : (255 - b)) * ds).round(),
- 1,
- );
- }
- return MaterialColor(value, swatch);
-}
lib/screens/settings.dart
@@ -5,7 +5,6 @@ import 'package:blood_pressure_app/components/input_dialoge.dart';
import 'package:blood_pressure_app/components/settings_widgets.dart';
import 'package:blood_pressure_app/model/blood_pressure.dart';
import 'package:blood_pressure_app/model/iso_lang_names.dart';
-import 'package:blood_pressure_app/model/settings_store.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:blood_pressure_app/screens/subsettings/delete_data.dart';
import 'package:blood_pressure_app/screens/subsettings/enter_timeformat.dart';
@@ -83,7 +82,7 @@ class SettingsPage extends StatelessWidget {
),
ColorSelectionSettingsTile(
key: const Key('accentColor'),
- onMainColorChanged: (color) => settings.accentColor = createMaterialColor((color ?? Colors.teal).value),
+ onMainColorChanged: (color) => settings.accentColor = color,
initialColor: settings.accentColor,
title: Text(localizations.accentColor)),
DropDownSettingsTile<Locale?>(
@@ -126,7 +125,7 @@ class SettingsPage extends StatelessWidget {
),
ColorSelectionSettingsTile(
key: const Key('sysColor'),
- onMainColorChanged: (color) => settings.sysColor = createMaterialColor((color ?? Colors.green).value),
+ onMainColorChanged: (color) => settings.sysColor = color,
initialColor: settings.sysColor,
title: Text(localizations.sysColor)),
ColorSelectionSettingsTile(
@@ -136,7 +135,7 @@ class SettingsPage extends StatelessWidget {
title: Text(localizations.diaColor)),
ColorSelectionSettingsTile(
key: const Key('pulColor'),
- onMainColorChanged: (color) => settings.pulColor = createMaterialColor((color ?? Colors.red).value),
+ onMainColorChanged: (color) => settings.pulColor = color,
initialColor: settings.pulColor,
title: Text(localizations.pulColor)),
SwitchSettingsTile(
test/model/convert_util_test.dart
@@ -75,16 +75,16 @@ void main() {
});
test('parseMaterialColor should parse valid values correctly', () {
- expect(ConvertUtil.parseMaterialColor(Colors.deepOrange), Colors.deepOrange);
- expect(ConvertUtil.parseMaterialColor(Colors.grey)?.value, Colors.grey.value);
- expect(ConvertUtil.parseMaterialColor(Colors.grey.value)?.value, Colors.grey.value);
- expect(ConvertUtil.parseMaterialColor(Colors.deepOrange.value)?.value, Colors.deepOrange.value);
- expect(ConvertUtil.parseMaterialColor(0xff000000)?.value, 0xff000000);
- expect(ConvertUtil.parseMaterialColor('0x00ff0000')?.value, 0x00ff0000);
- expect(ConvertUtil.parseMaterialColor(const Color(0x00ff0000))?.value, 0x00ff0000);
+ expect(ConvertUtil.parseColor(Colors.deepOrange), Colors.deepOrange);
+ expect(ConvertUtil.parseColor(Colors.grey)?.value, Colors.grey.value);
+ expect(ConvertUtil.parseColor(Colors.grey.value)?.value, Colors.grey.value);
+ expect(ConvertUtil.parseColor(Colors.deepOrange.value)?.value, Colors.deepOrange.value);
+ expect(ConvertUtil.parseColor(0xff000000)?.value, 0xff000000);
+ expect(ConvertUtil.parseColor('0x00ff0000')?.value, 0x00ff0000);
+ expect(ConvertUtil.parseColor(const Color(0x00ff0000))?.value, 0x00ff0000);
});
test('parseMaterialColor should parse invalid values as null', () {
- expect(ConvertUtil.parseMaterialColor('test'), null);
+ expect(ConvertUtil.parseColor('test'), null);
expect(ConvertUtil.parseString({'test': 5}), null);
});