From 153cb9ca51eb3b41a08bc6990074a6676e3bfa22 Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Sat, 6 Apr 2024 22:58:13 +0200 Subject: [PATCH] set zoom on equipment profile change --- .../zoom_slider/widget_slider_zoom.dart | 25 ++++++++++++++----- .../widget_list_tile_slider_picker.dart | 2 +- .../widget_container_equipment_profile.dart | 3 ++- lib/utils/double_to_zoom.dart | 3 +++ 4 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 lib/utils/double_to_zoom.dart diff --git a/lib/screens/metering/components/camera_container/components/camera_controls/components/zoom_slider/widget_slider_zoom.dart b/lib/screens/metering/components/camera_container/components/camera_controls/components/zoom_slider/widget_slider_zoom.dart index 7cec404..80cd4bd 100644 --- a/lib/screens/metering/components/camera_container/components/camera_controls/components/zoom_slider/widget_slider_zoom.dart +++ b/lib/screens/metering/components/camera_container/components/camera_controls/components/zoom_slider/widget_slider_zoom.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:lightmeter/providers/equipment_profile_provider.dart'; import 'package:lightmeter/screens/shared/ruler_slider/widget_slider_ruler.dart'; +import 'package:lightmeter/utils/double_to_zoom.dart'; -class ZoomSlider extends StatelessWidget { +class ZoomSlider extends StatefulWidget { final RangeValues range; final double value; final ValueChanged onChanged; @@ -13,16 +15,27 @@ class ZoomSlider extends StatelessWidget { super.key, }); + @override + State createState() => _ZoomSliderState(); +} + +class _ZoomSliderState extends State { + @override + void didChangeDependencies() { + super.didChangeDependencies(); + widget.onChanged(EquipmentProfiles.selectedOf(context).lensZoom); + } + @override Widget build(BuildContext context) { return RulerSlider( - range: range, - value: value, - onChanged: onChanged, + range: widget.range, + value: widget.value, + onChanged: widget.onChanged, icon: Icons.search, - defaultValue: range.start, + defaultValue: EquipmentProfiles.selectedOf(context).lensZoom, rulerValueAdapter: (value) => value.toStringAsFixed(0), - valueAdapter: (value) => 'x${value.toStringAsFixed(2)}', + valueAdapter: (value) => value.toZoom(), ); } } diff --git a/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/components/slider_picker_list_tile/widget_list_tile_slider_picker.dart b/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/components/slider_picker_list_tile/widget_list_tile_slider_picker.dart index a651e99..48d5caf 100644 --- a/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/components/slider_picker_list_tile/widget_list_tile_slider_picker.dart +++ b/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/components/slider_picker_list_tile/widget_list_tile_slider_picker.dart @@ -26,7 +26,7 @@ class SliderPickerListTile extends StatelessWidget { return ListTile( leading: Icon(icon), title: Text(title), - trailing: Text(value.toString()), + trailing: Text(valueAdapter(context, value)), onTap: () { showDialog( context: context, diff --git a/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart b/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart index 7e807f6..bb1cc72 100644 --- a/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart +++ b/lib/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart @@ -8,6 +8,7 @@ import 'package:lightmeter/screens/settings/components/metering/components/equip import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/components/range_picker_list_tile/widget_list_tile_range_picker.dart'; import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/components/slider_picker_list_tile/widget_list_tile_slider_picker.dart'; import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_name_dialog/widget_dialog_equipment_profile_name.dart'; +import 'package:lightmeter/utils/double_to_zoom.dart'; import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; class EquipmentProfileContainer extends StatefulWidget { @@ -276,7 +277,7 @@ class _AnimatedEquipmentListTiles extends AnimatedWidget { value: equipmentData.lensZoom, range: const RangeValues(1, 7), onChanged: onLensZoomChanged, - valueAdapter: (context, value) => 'x${value.toStringAsFixed(2)}', + valueAdapter: (_, value) => value.toZoom(), ), ListTile( contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM), diff --git a/lib/utils/double_to_zoom.dart b/lib/utils/double_to_zoom.dart new file mode 100644 index 0000000..6d2b99f --- /dev/null +++ b/lib/utils/double_to_zoom.dart @@ -0,0 +1,3 @@ +extension DoubleToZoom on double { + String toZoom() => 'x${toStringAsFixed(2)}'; +}