Commit ad2e734

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-10-10 20:01:33
change all instances of MaterialColor to saved Color
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent efd163b
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);
     });