Commit 5b9fa40

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-10-10 19:25:53
update add measurement page color picker
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent f73b679
Changed files (2)
lib/components/color_picker.dart
@@ -7,7 +7,7 @@ class ColorPicker extends StatefulWidget {
     this.availableColors,
     this.initialColor,
     required this.onColorSelected,
-    this.showNullColor = true,
+    this.showTransparentColor = true,
     this.circleSize = 50
   });
 
@@ -18,14 +18,15 @@ class ColorPicker extends StatefulWidget {
 
   /// Color that starts out highlighted.
   ///
-  /// When [initialColor] is null and [showNullColor] is false no color is selected.
+  /// When [initialColor] is null the transparent color is selected. When [showTransparentColor] is false as well no
+  /// color is selected.
   final Color? initialColor;
 
   /// Called after a click on a color.
   final FutureOr<void> Function(Color? color) onColorSelected;
 
-  /// Controls whether a option for selecting no color is displayed.
-  final bool showNullColor;
+  /// Controls whether a option for selecting that no color is displayed.
+  final bool showTransparentColor;
 
   /// List of all material colors and black/white
   static final List<Color> allColors = [
@@ -77,12 +78,12 @@ class ColorPicker extends StatefulWidget {
 
 class _ColorPickerState extends State<ColorPicker> {
   /// Currently selected color.
-  Color? _selected;
+  late Color _selected;
 
   @override
   void initState() {
     super.initState();
-    _selected = widget.initialColor;
+    _selected = widget.initialColor ?? Colors.transparent;
   }
 
   @override
@@ -95,8 +96,8 @@ class _ColorPickerState extends State<ColorPicker> {
               onTap: () {
                 setState(() {
                   _selected = color;
+                  widget.onColorSelected(_selected);
                 });
-                widget.onColorSelected(color);
               },
               child: Container(
                 decoration: BoxDecoration(
@@ -110,23 +111,22 @@ class _ColorPickerState extends State<ColorPicker> {
                 ),
               ),
             ),
-        if (widget.showNullColor)
+        if (widget.showTransparentColor)
           InkWell(
             onTap: () {
               setState(() {
-                _selected = null;
+                _selected = Colors.transparent;
+                widget.onColorSelected(_selected);
               });
-              widget.onColorSelected(null);
             },
             child: Container(
               padding: const EdgeInsets.all(5),
               decoration: BoxDecoration(
-                color: _selected == null ? Theme.of(context).disabledColor : Colors.transparent,
+                color: _selected == Colors.transparent ? Theme.of(context).disabledColor : Colors.transparent,
                 shape: BoxShape.circle,),
-              child: Container(
+              child: SizedBox(
                 height: widget.circleSize,
                 width: widget.circleSize,
-                decoration: const BoxDecoration(color: Colors.transparent, shape: BoxShape.circle,),
                 child: const Icon(Icons.block),
               ),
             ),
lib/screens/add_measurement.dart
@@ -1,3 +1,4 @@
+import 'package:blood_pressure_app/components/color_picker.dart';
 import 'package:blood_pressure_app/components/date_time_picker.dart';
 import 'package:blood_pressure_app/model/blood_pressure.dart';
 import 'package:blood_pressure_app/model/export_import.dart';
@@ -8,7 +9,6 @@ import 'package:blood_pressure_app/model/storage/settings_store.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-import 'package:flutter_material_color_picker/flutter_material_color_picker.dart';
 import 'package:intl/intl.dart';
 import 'package:provider/provider.dart';
 
@@ -212,11 +212,18 @@ class _AddMeasurementPageState extends State<AddMeasurementPage> {
             builder: (_) {
               return AlertDialog(
                 contentPadding: const EdgeInsets.all(6.0),
-                content: MaterialColorPicker(
+                content: /* TODO
+                MaterialColorPicker(
                   circleSize: 53,
                   onMainColorChange: (color) {
                     Navigator.of(context).pop(color);
                   },
+                )*/
+                ColorPicker(
+                  initialColor: _needlePin?.color,
+                  onColorSelected: (color) {
+                    Navigator.of(context).pop(color);
+                  }
                 ),
                 actions: [
                   TextButton(
@@ -228,7 +235,9 @@ class _AddMeasurementPageState extends State<AddMeasurementPage> {
             },
           );
           setState(() {
-            _needlePin = (color is MaterialColor) ? MeasurementNeedlePin(color) : null;
+            if (color != null) {
+              _needlePin = (color == Colors.transparent) ? null : MeasurementNeedlePin(color);
+            }
           });
         },