From d8237cbd7f5bf0a8ccea706956f32693f35741b5 Mon Sep 17 00:00:00 2001 From: suragch Date: Tue, 20 Jul 2021 14:14:52 +0800 Subject: [PATCH] version 0.6.0 --- CHANGELOG.md | 5 ++ example/lib/main.dart | 26 +++++----- example/pubspec.lock | 12 ++--- example/pubspec.yaml | 4 +- lib/audio_video_progress_bar.dart | 84 +++++++++++++++++-------------- pubspec.yaml | 2 +- 6 files changed, 73 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d8a9d9..830a5b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [0.6.0] - July 20, 2021 + +* Made the thumb and rounded bar caps stay within bar bounds so that padding is maintained from side text (#13) +* This change could possibly affect some user's layout so even though it isn't a breaking change programmatically, still bumping up a version so version upgrades won't be automatic. + ## [0.5.0] - July 5, 2021 * Added `TimeLabelLocation.above` (@Groseuros) diff --git a/example/lib/main.dart b/example/lib/main.dart index b24f040..7f0cb01 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -95,18 +95,20 @@ class _HomeWidgetState extends State { Widget build(BuildContext context) { debugPrint('building app'); return Scaffold( - body: Padding( - padding: const EdgeInsets.all(20.0), - child: Column( - children: [ - _themeButtons(), - _labelLocationButtons(), - _labelTypeButtons(), - _labelSizeButtons(), - const Spacer(), - _progressBar(), - _playButton(), - ], + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + children: [ + _themeButtons(), + _labelLocationButtons(), + _labelTypeButtons(), + _labelSizeButtons(), + const Spacer(), + _progressBar(), + _playButton(), + ], + ), ), ), ); diff --git a/example/pubspec.lock b/example/pubspec.lock index 72407b3..3ec837e 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -14,14 +14,14 @@ packages: name: audio_session url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.1.5" audio_video_progress_bar: dependency: "direct main" description: path: ".." relative: true source: path - version: "0.5.0" + version: "0.6.0" boolean_selector: dependency: transitive description: @@ -120,21 +120,21 @@ packages: name: just_audio url: "https://pub.dartlang.org" source: hosted - version: "0.7.4" + version: "0.9.2" just_audio_platform_interface: dependency: transitive description: name: just_audio_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "4.0.0" just_audio_web: dependency: transitive description: name: just_audio_web url: "https://pub.dartlang.org" source: hosted - version: "0.3.1" + version: "0.4.0" lints: dependency: transitive description: @@ -225,7 +225,7 @@ packages: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.26.0" + version: "0.27.1" sky_engine: dependency: transitive description: flutter diff --git a/example/pubspec.yaml b/example/pubspec.yaml index aafff93..02c76e6 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -13,8 +13,8 @@ dependencies: sdk: flutter audio_video_progress_bar: path: ../ - just_audio: ^0.7.4 - rxdart: ^0.26.0 + just_audio: ^0.9.2 + rxdart: ^0.27.0 dev_dependencies: flutter_lints: ^1.0.3 diff --git a/lib/audio_video_progress_bar.dart b/lib/audio_video_progress_bar.dart index 8336fee..dc40e72 100644 --- a/lib/audio_video_progress_bar.dart +++ b/lib/audio_video_progress_bar.dart @@ -611,8 +611,7 @@ class _RenderProgressBar extends RenderBox { /// | -------O---------------- | void _drawProgressBarWithLabelsAboveOrBelow(Canvas canvas) { // calculate sizes - final padding = _thumbRadius; - final barWidth = size.width - 2 * padding; + final barWidth = size.width; final barHeight = 2 * _thumbRadius; // whether to paint the labels below the progress bar or above it @@ -620,19 +619,19 @@ class _RenderProgressBar extends RenderBox { // current time label final labelDy = (isLabelBelow) ? barHeight : 0.0; - final leftLabelOffset = Offset(padding, labelDy); + final leftLabelOffset = Offset(0, labelDy); final leftTimeLabel = _leftTimeLabel(); leftTimeLabel.paint(canvas, leftLabelOffset); // total or remaining time label final rightTimeLabel = _rightTimeLabel(); - final rightLabelDx = size.width - padding - rightTimeLabel.width; + final rightLabelDx = size.width - rightTimeLabel.width; final rightLabelOffset = Offset(rightLabelDx, labelDy); _rightTimeLabel().paint(canvas, rightLabelOffset); // progress bar final barDy = (isLabelBelow) ? 0.0 : leftTimeLabel.height; - _drawProgressBar(canvas, Offset(padding, barDy), Size(barWidth, barHeight)); + _drawProgressBar(canvas, Offset(0, barDy), Size(barWidth, barHeight)); } /// Draw the progress bar and labels in the following locations: @@ -641,7 +640,7 @@ class _RenderProgressBar extends RenderBox { /// void _drawProgressBarWithLabelsOnSides(Canvas canvas) { // calculate sizes - final padding = _thumbRadius; + const padding = 10; final barHeight = 2 * _thumbRadius; // painters @@ -675,17 +674,12 @@ class _RenderProgressBar extends RenderBox { /// | -------O---------------- | /// void _drawProgressBarWithoutLabels(Canvas canvas) { - final padding = _thumbRadius; - final barWidth = size.width - 2 * padding; + final barWidth = size.width; final barHeight = 2 * _thumbRadius; - _drawProgressBar(canvas, Offset(padding, 0), Size(barWidth, barHeight)); + _drawProgressBar(canvas, Offset.zero, Size(barWidth, barHeight)); } - void _drawProgressBar( - Canvas canvas, - Offset offset, - Size localSize, - ) { + void _drawProgressBar(Canvas canvas, Offset offset, Size localSize) { canvas.save(); canvas.translate(offset.dx, offset.dy); _drawBaseBar(canvas, localSize); @@ -696,40 +690,53 @@ class _RenderProgressBar extends RenderBox { } void _drawBaseBar(Canvas canvas, Size localSize) { - final baseBarPaint = Paint() - ..color = baseBarColor - ..strokeCap = StrokeCap.round - ..strokeWidth = barHeight; - final startPoint = Offset(0, localSize.height / 2); - var endPoint = Offset(localSize.width, localSize.height / 2); - canvas.drawLine(startPoint, endPoint, baseBarPaint); + _drawBar( + canvas: canvas, + availableSize: localSize, + widthProportion: 1.0, + color: baseBarColor, + ); } void _drawBufferedBar(Canvas canvas, Size localSize) { - final bufferedBarPaint = Paint() - ..color = bufferedBarColor - ..strokeCap = StrokeCap.round - ..strokeWidth = barHeight; - final bufferedWidth = _proportionOfTotal(_buffered) * localSize.width; - final startPoint = Offset(0, localSize.height / 2); - final endPoint = Offset(bufferedWidth, localSize.height / 2); - canvas.drawLine(startPoint, endPoint, bufferedBarPaint); + _drawBar( + canvas: canvas, + availableSize: localSize, + widthProportion: _proportionOfTotal(_buffered), + color: bufferedBarColor, + ); } void _drawCurrentProgressBar(Canvas canvas, Size localSize) { - final progressBarPaint = Paint() - ..color = progressBarColor + _drawBar( + canvas: canvas, + availableSize: localSize, + widthProportion: _proportionOfTotal(_progress), + color: progressBarColor, + ); + } + + void _drawBar( + {required Canvas canvas, + required Size availableSize, + required double widthProportion, + required Color color}) { + final baseBarPaint = Paint() + ..color = color ..strokeCap = StrokeCap.round - ..strokeWidth = barHeight; - final progressWidth = _proportionOfTotal(_progress) * localSize.width; - final startPoint = Offset(0, localSize.height / 2); - final endPoint = Offset(progressWidth, localSize.height / 2); - canvas.drawLine(startPoint, endPoint, progressBarPaint); + ..strokeWidth = _barHeight; + final capRadius = _barHeight / 2; + final adjustedWidth = availableSize.width - barHeight; + final dx = widthProportion * adjustedWidth + capRadius; + final startPoint = Offset(capRadius, availableSize.height / 2); + var endPoint = Offset(dx, availableSize.height / 2); + canvas.drawLine(startPoint, endPoint, baseBarPaint); } void _drawThumb(Canvas canvas, Size localSize) { final thumbPaint = Paint()..color = thumbColor; - final thumbDx = _thumbValue * localSize.width; + final adjustedWidth = localSize.width - 2 * _thumbRadius; + final thumbDx = _thumbValue * adjustedWidth + _thumbRadius; final center = Offset(thumbDx, localSize.height / 2); if (_userIsDraggingThumb) { final thumbGlowPaint = Paint()..color = thumbGlowColor; @@ -742,8 +749,7 @@ class _RenderProgressBar extends RenderBox { if (total.inMilliseconds == 0) { return 0.0; } - final proportion = duration.inMilliseconds / total.inMilliseconds; - return proportion; + return duration.inMilliseconds / total.inMilliseconds; } String _getTimeString(Duration time) { diff --git a/pubspec.yaml b/pubspec.yaml index b3fa087..b941361 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: audio_video_progress_bar description: A progress bar widget to show or change the position of an audio or video stream. -version: 0.5.0 +version: 0.6.0 homepage: https://github.com/suragch/audio_video_progress_bar environment: