diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index c379303e..b47d38de 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -842,8 +842,7 @@ class _PLVideoPlayerState extends State total: Duration(seconds: max), progressBarColor: colorTheme, baseBarColor: Colors.white.withOpacity(0.2), - bufferedBarColor: - Theme.of(context).colorScheme.primary.withOpacity(0.4), + bufferedBarColor: Colors.white.withOpacity(0.6), timeLabelLocation: TimeLabelLocation.none, thumbColor: colorTheme, barHeight: 3, diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index b3ff37db..3c21c2af 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -1,8 +1,6 @@ -import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; import 'package:pilipala/plugin/pl_player/index.dart'; -import 'package:pilipala/utils/feed_back.dart'; +import 'progress_bar.dart'; class BottomControl extends StatelessWidget implements PreferredSizeWidget { final PlPlayerController? controller; @@ -20,54 +18,18 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { @override Widget build(BuildContext context) { - Color colorTheme = Theme.of(context).colorScheme.primary; - final _ = controller!; return Container( color: Colors.transparent, height: 90, - padding: const EdgeInsets.only(left: 18, right: 18), + padding: const EdgeInsets.symmetric(horizontal: 18), child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ - Obx( - () { - final int value = _.sliderPositionSeconds.value; - final int max = _.durationSeconds.value; - final int buffer = _.bufferedSeconds.value; - if (value > max || max <= 0) { - return const SizedBox(); - } - return Padding( - padding: const EdgeInsets.only(left: 7, right: 7, bottom: 6), - child: ProgressBar( - progress: Duration(seconds: value), - buffered: Duration(seconds: buffer), - total: Duration(seconds: max), - progressBarColor: colorTheme, - baseBarColor: Colors.white.withOpacity(0.2), - bufferedBarColor: colorTheme.withOpacity(0.4), - timeLabelLocation: TimeLabelLocation.none, - thumbColor: colorTheme, - barHeight: 3.5, - thumbRadius: 7, - onDragStart: (duration) { - feedBack(); - _.onChangedSliderStart(); - }, - onDragUpdate: (duration) { - _.onUpdatedSliderProgress(duration.timeStamp); - }, - onSeek: (duration) { - _.onChangedSliderEnd(); - _.onChangedSlider(duration.inSeconds.toDouble()); - _.seekTo(Duration(seconds: duration.inSeconds), - type: 'slider'); - }, - ), - ); - }, + Padding( + padding: const EdgeInsets.fromLTRB(7, 0, 7, 6), + child: ProgressBarWidget(controller: controller!), ), - Row(children: [...buildBottomControl!]), + Row(children: buildBottomControl!), const SizedBox(height: 10), ], ), diff --git a/lib/plugin/pl_player/widgets/progress_bar.dart b/lib/plugin/pl_player/widgets/progress_bar.dart new file mode 100644 index 00000000..d0ed0a4e --- /dev/null +++ b/lib/plugin/pl_player/widgets/progress_bar.dart @@ -0,0 +1,52 @@ +import 'package:audio_video_progress_bar/audio_video_progress_bar.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:pilipala/plugin/pl_player/index.dart'; +import 'package:pilipala/utils/feed_back.dart'; + +class ProgressBarWidget extends StatelessWidget { + final PlPlayerController controller; + + const ProgressBarWidget({ + required this.controller, + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Obx(() { + Color colorTheme = Theme.of(context).colorScheme.primary; + final _ = controller; + final int value = _.sliderPositionSeconds.value; + final int max = _.durationSeconds.value; + final int buffer = _.bufferedSeconds.value; + if (value > max || max <= 0) { + return const SizedBox(); + } + return ProgressBar( + progress: Duration(seconds: value), + buffered: Duration(seconds: buffer), + total: Duration(seconds: max), + progressBarColor: colorTheme, + baseBarColor: Colors.white.withOpacity(0.2), + bufferedBarColor: Colors.white.withOpacity(0.6), + timeLabelLocation: TimeLabelLocation.none, + thumbColor: colorTheme, + barHeight: 3.5, + thumbRadius: 7, + onDragStart: (duration) { + feedBack(); + _.onChangedSliderStart(); + }, + onDragUpdate: (duration) { + _.onUpdatedSliderProgress(duration.timeStamp); + }, + onSeek: (duration) { + _.onChangedSliderEnd(); + _.onChangedSlider(duration.inSeconds.toDouble()); + _.seekTo(Duration(seconds: duration.inSeconds), type: 'slider'); + }, + ); + }); + } +}