Skip to content

Commit

Permalink
version 0.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
suragch committed Jul 20, 2021
1 parent beab8f2 commit d8237cb
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 60 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
26 changes: 14 additions & 12 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,20 @@ class _HomeWidgetState extends State<HomeWidget> {
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(),
],
),
),
),
);
Expand Down
12 changes: 6 additions & 6 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
84 changes: 45 additions & 39 deletions lib/audio_video_progress_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -611,28 +611,27 @@ 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
final isLabelBelow = _timeLabelLocation == TimeLabelLocation.below;

// 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:
Expand All @@ -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
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand All @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -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:
Expand Down

0 comments on commit d8237cb

Please sign in to comment.