From 4b701ce0409df45a8d4135a524ecb183009dd964 Mon Sep 17 00:00:00 2001 From: windrunner Date: Mon, 11 Feb 2019 15:12:19 +0800 Subject: [PATCH 1/4] Update seekbar.dart --- lib/seekbar/seekbar.dart | 46 ++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/seekbar/seekbar.dart b/lib/seekbar/seekbar.dart index 28143d0..3d0e24e 100644 --- a/lib/seekbar/seekbar.dart +++ b/lib/seekbar/seekbar.dart @@ -121,7 +121,7 @@ abstract class BasicSeekbar extends StatefulWidget { final String semanticsValue; ///进度改变的回调 - final ValueChanged onValueChanged; + final void Function(ProgressValue value, bool isEnd) onValueChanged; // final void Function(double) onValueChanged; ///进度条是否是圆角的,还是方形的,默认是圆角的 @@ -846,37 +846,41 @@ class _SeekBarState extends State { if (widget.afterDragShowSectionText ?? false) { _afterDragShowSectionText = true; } + _setValue(); }); } - void _setValue(double newValue) { - //这个是当前的进度 从0-1 - _value = newValue / context.size.width; - - //这个�����值��能在这个地方获取,如果没有指定,就是容器的��度 - if (sectionCount > 1) { - for (var i = 0; i < sectionCount; i++) { - if (_value >= i * e && _value <= (i + 1) * e) { - start = i * e; - if (i == sectionCount) { - end = sectionCount * e; - } else { - end = (i + 1) * e; + void _setValue([double newValue = -1]) { + bool end = newValue == -1; + if (!end) { + //这个是当前的进度 从0-1 + _value = newValue / context.size.width; + + //这个�����值��能在这个地方获取,如果没有指定,就是容器的��度 + if (sectionCount > 1) { + for (var i = 0; i < sectionCount; i++) { + if (_value >= i * e && _value <= (i + 1) * e) { + start = i * e; + if (i == sectionCount) { + end = sectionCount * e; + } else { + end = (i + 1) * e; + } + break; } - break; } - } - if (_value >= start + e / 2) { - _value = end; - } else { - _value = start; + if (_value >= start + e / 2) { + _value = end; + } else { + _value = start; + } } } double realValue = length * _value + _min; //真实的值 if (widget.onValueChanged != null) { ProgressValue v = ProgressValue(progress: _value, value: realValue); - widget.onValueChanged(v); + widget.onValueChanged(v, end); } } From f06751150676f118f0bed08337f21b51a52cc3ff Mon Sep 17 00:00:00 2001 From: windrunner Date: Mon, 11 Feb 2019 15:16:23 +0800 Subject: [PATCH 2/4] Update seekbar.dart --- lib/seekbar/seekbar.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/seekbar/seekbar.dart b/lib/seekbar/seekbar.dart index 3d0e24e..7df6346 100644 --- a/lib/seekbar/seekbar.dart +++ b/lib/seekbar/seekbar.dart @@ -561,7 +561,7 @@ class SeekBar extends BasicSeekbar { bool bubbleInCenter; SeekBar({ Key key, - ValueChanged onValueChanged, + void Function(ProgressValue value, bool isEnd) onValueChanged, double min, double max, double progresseight, From b93a2a100634bea1a35b119bb9a0737d7c768edc Mon Sep 17 00:00:00 2001 From: windrunner Date: Mon, 11 Feb 2019 15:22:19 +0800 Subject: [PATCH 3/4] Update seekbar.dart --- lib/seekbar/seekbar.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/seekbar/seekbar.dart b/lib/seekbar/seekbar.dart index 7df6346..f0120d6 100644 --- a/lib/seekbar/seekbar.dart +++ b/lib/seekbar/seekbar.dart @@ -851,8 +851,8 @@ class _SeekBarState extends State { } void _setValue([double newValue = -1]) { - bool end = newValue == -1; - if (!end) { + bool isEnd = newValue == -1; + if (!isEnd) { //这个是当前的进度 从0-1 _value = newValue / context.size.width; @@ -880,7 +880,7 @@ class _SeekBarState extends State { if (widget.onValueChanged != null) { ProgressValue v = ProgressValue(progress: _value, value: realValue); - widget.onValueChanged(v, end); + widget.onValueChanged(v, isEnd); } } From 52e3d2acd566283788639de6c0b2ac9f990a5af3 Mon Sep 17 00:00:00 2001 From: windrunner Date: Mon, 11 Feb 2019 15:31:27 +0800 Subject: [PATCH 4/4] Update seekbar.dart --- lib/seekbar/seekbar.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/seekbar/seekbar.dart b/lib/seekbar/seekbar.dart index f0120d6..619ce26 100644 --- a/lib/seekbar/seekbar.dart +++ b/lib/seekbar/seekbar.dart @@ -773,7 +773,7 @@ class _SeekBarState extends State { setState(() { touchPoint = new Offset( renderBox.globalToLocal(tapDetails.globalPosition).dx, 0.0); - _setValue(touchPoint.dx); + _setValue(touchPoint.dx, true); if (widget.alwaysShowBubble != null && widget.alwaysShowBubble ? false : true) { @@ -846,12 +846,11 @@ class _SeekBarState extends State { if (widget.afterDragShowSectionText ?? false) { _afterDragShowSectionText = true; } - _setValue(); + _setValue(-1, true); }); } - void _setValue([double newValue = -1]) { - bool isEnd = newValue == -1; + void _setValue(double newValue, [bool isEnd = false]) { if (!isEnd) { //这个是当前的进度 从0-1 _value = newValue / context.size.width;