From c1f0be497e41ce5ce4eb5f1aa10d3e8dbb44f3db Mon Sep 17 00:00:00 2001 From: Mykyta Huchenko Date: Tue, 25 Feb 2025 21:39:34 +0200 Subject: [PATCH 1/5] Add shouldUpdateOutsideOfBounds parameter and update touch width logic --- lib/src/circular_slider.dart | 10 ++- pubspec.lock | 138 +++++++++++++++++++++++------------ 2 files changed, 97 insertions(+), 51 deletions(-) diff --git a/lib/src/circular_slider.dart b/lib/src/circular_slider.dart index b195d28..fd4bc54 100644 --- a/lib/src/circular_slider.dart +++ b/lib/src/circular_slider.dart @@ -24,6 +24,7 @@ class SleekCircularSlider extends StatefulWidget { final OnChange? onChangeStart; final OnChange? onChangeEnd; final InnerWidget? innerWidget; + final bool shouldUpdateOutsideOfBounds; static const defaultAppearance = CircularSliderAppearance(); double get angle { @@ -39,6 +40,7 @@ class SleekCircularSlider extends StatefulWidget { this.onChange, this.onChangeStart, this.onChangeEnd, + this.shouldUpdateOutsideOfBounds = false, this.innerWidget}) : assert(min <= max), assert(initialValue >= min && initialValue <= max), @@ -263,9 +265,11 @@ class _SleekCircularSliderState extends State } RenderBox renderBox = context.findRenderObject() as RenderBox; var position = renderBox.globalToLocal(details); - final double touchWidth = widget.appearance.progressBarWidth >= 25.0 - ? widget.appearance.progressBarWidth - : 25.0; + final double touchWidth = widget.shouldUpdateOutsideOfBounds + ? double.infinity + : widget.appearance.progressBarWidth >= 25.0 + ? widget.appearance.progressBarWidth + : 25.0; if (isPointAlongCircle( position, _painter!.center!, _painter!.radius, touchWidth)) { _selectedAngle = coordinatesToRadians(_painter!.center!, position); diff --git a/pubspec.lock b/pubspec.lock index 9e82bb7..a91a1d4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.12.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + version: "1.4.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.19.1" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.2" flutter: dependency: "direct main" description: flutter @@ -60,88 +59,131 @@ packages: description: flutter source: sdk version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.11.1" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.16.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" source: hosted - version: "0.3.0" - typed_data: + version: "0.7.4" + vector_math: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "1.3.0" - vector_math: + version: "2.1.4" + vm_service: dependency: transitive description: - name: vector_math - url: "https://pub.dartlang.org" + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "14.3.1" sdks: - dart: ">=2.12.0 <3.0.0" - flutter: ">=2.0.0" + dart: ">=3.7.0-0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" From a5a71b99ba216031af534209ecf153b086792604 Mon Sep 17 00:00:00 2001 From: Mykyta Huchenko Date: Tue, 25 Feb 2025 23:43:30 +0200 Subject: [PATCH 2/5] Update touch width logic to consider shouldUpdateOutsideOfBounds parameter --- lib/src/circular_slider.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/src/circular_slider.dart b/lib/src/circular_slider.dart index fd4bc54..ec4ff6d 100644 --- a/lib/src/circular_slider.dart +++ b/lib/src/circular_slider.dart @@ -297,9 +297,11 @@ class _SleekCircularSliderState extends State return false; } - final double touchWidth = widget.appearance.progressBarWidth >= 25.0 - ? widget.appearance.progressBarWidth - : 25.0; + final double touchWidth = widget.shouldUpdateOutsideOfBounds + ? double.infinity + : widget.appearance.progressBarWidth >= 25.0 + ? widget.appearance.progressBarWidth + : 25.0; if (isPointAlongCircle( position, _painter!.center!, _painter!.radius, touchWidth)) { From ce403edde71f8ebc59bca2edf050b30b53ddf17a Mon Sep 17 00:00:00 2001 From: Mykyta Huchenko Date: Tue, 25 Feb 2025 23:47:24 +0200 Subject: [PATCH 3/5] Rename shouldUpdateOutsideOfBounds to shouldUpdateOutsideOfBounds2 in SleekCircularSlider --- lib/src/circular_slider.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/circular_slider.dart b/lib/src/circular_slider.dart index ec4ff6d..4157619 100644 --- a/lib/src/circular_slider.dart +++ b/lib/src/circular_slider.dart @@ -24,7 +24,7 @@ class SleekCircularSlider extends StatefulWidget { final OnChange? onChangeStart; final OnChange? onChangeEnd; final InnerWidget? innerWidget; - final bool shouldUpdateOutsideOfBounds; + final bool shouldUpdateOutsideOfBounds2; static const defaultAppearance = CircularSliderAppearance(); double get angle { @@ -40,7 +40,7 @@ class SleekCircularSlider extends StatefulWidget { this.onChange, this.onChangeStart, this.onChangeEnd, - this.shouldUpdateOutsideOfBounds = false, + this.shouldUpdateOutsideOfBounds2 = false, this.innerWidget}) : assert(min <= max), assert(initialValue >= min && initialValue <= max), @@ -265,7 +265,7 @@ class _SleekCircularSliderState extends State } RenderBox renderBox = context.findRenderObject() as RenderBox; var position = renderBox.globalToLocal(details); - final double touchWidth = widget.shouldUpdateOutsideOfBounds + final double touchWidth = widget.shouldUpdateOutsideOfBounds2 ? double.infinity : widget.appearance.progressBarWidth >= 25.0 ? widget.appearance.progressBarWidth @@ -297,7 +297,7 @@ class _SleekCircularSliderState extends State return false; } - final double touchWidth = widget.shouldUpdateOutsideOfBounds + final double touchWidth = widget.shouldUpdateOutsideOfBounds2 ? double.infinity : widget.appearance.progressBarWidth >= 25.0 ? widget.appearance.progressBarWidth From f2f45ce86149746b053851ff2e2e26b7ad63ce58 Mon Sep 17 00:00:00 2001 From: Mykyta Huchenko Date: Wed, 26 Feb 2025 00:01:18 +0200 Subject: [PATCH 4/5] Rename shouldUpdateOutsideOfBounds2 to shouldUpdateOutsideOfBounds in SleekCircularSlider --- lib/src/circular_slider.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/circular_slider.dart b/lib/src/circular_slider.dart index 4157619..ec4ff6d 100644 --- a/lib/src/circular_slider.dart +++ b/lib/src/circular_slider.dart @@ -24,7 +24,7 @@ class SleekCircularSlider extends StatefulWidget { final OnChange? onChangeStart; final OnChange? onChangeEnd; final InnerWidget? innerWidget; - final bool shouldUpdateOutsideOfBounds2; + final bool shouldUpdateOutsideOfBounds; static const defaultAppearance = CircularSliderAppearance(); double get angle { @@ -40,7 +40,7 @@ class SleekCircularSlider extends StatefulWidget { this.onChange, this.onChangeStart, this.onChangeEnd, - this.shouldUpdateOutsideOfBounds2 = false, + this.shouldUpdateOutsideOfBounds = false, this.innerWidget}) : assert(min <= max), assert(initialValue >= min && initialValue <= max), @@ -265,7 +265,7 @@ class _SleekCircularSliderState extends State } RenderBox renderBox = context.findRenderObject() as RenderBox; var position = renderBox.globalToLocal(details); - final double touchWidth = widget.shouldUpdateOutsideOfBounds2 + final double touchWidth = widget.shouldUpdateOutsideOfBounds ? double.infinity : widget.appearance.progressBarWidth >= 25.0 ? widget.appearance.progressBarWidth @@ -297,7 +297,7 @@ class _SleekCircularSliderState extends State return false; } - final double touchWidth = widget.shouldUpdateOutsideOfBounds2 + final double touchWidth = widget.shouldUpdateOutsideOfBounds ? double.infinity : widget.appearance.progressBarWidth >= 25.0 ? widget.appearance.progressBarWidth From faa3d0526214f127c1b55e1979e74ff800744188 Mon Sep 17 00:00:00 2001 From: Mykyta Huchenko Date: Sun, 16 Mar 2025 16:48:12 +0200 Subject: [PATCH 5/5] Refactor touch width calculation to remove shouldUpdateOutsideOfBounds dependency --- lib/src/circular_slider.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/src/circular_slider.dart b/lib/src/circular_slider.dart index ec4ff6d..fd4bc54 100644 --- a/lib/src/circular_slider.dart +++ b/lib/src/circular_slider.dart @@ -297,11 +297,9 @@ class _SleekCircularSliderState extends State return false; } - final double touchWidth = widget.shouldUpdateOutsideOfBounds - ? double.infinity - : widget.appearance.progressBarWidth >= 25.0 - ? widget.appearance.progressBarWidth - : 25.0; + final double touchWidth = widget.appearance.progressBarWidth >= 25.0 + ? widget.appearance.progressBarWidth + : 25.0; if (isPointAlongCircle( position, _painter!.center!, _painter!.radius, touchWidth)) {