Files
PiliPlus/lib/plugin/pl_player/widgets/backward_seek.dart
dom 94063ab1f9 opt ui
Signed-off-by: dom <githubaccount56556@proton.me>
2026-05-25 14:34:44 +08:00

90 lines
2.1 KiB
Dart

import 'dart:async' show Timer;
import 'package:flutter/material.dart';
class BackwardSeekIndicator extends StatefulWidget {
final ValueChanged<Duration> onSubmitted;
final Duration duration;
const BackwardSeekIndicator({
super.key,
required this.onSubmitted,
required this.duration,
});
@override
State<BackwardSeekIndicator> createState() => BackwardSeekIndicatorState();
}
class BackwardSeekIndicatorState extends State<BackwardSeekIndicator> {
late Duration duration;
Timer? timer;
@override
void initState() {
super.initState();
duration = widget.duration;
timer = Timer(const Duration(milliseconds: 400), () {
widget.onSubmitted(duration);
});
}
@override
void dispose() {
timer?.cancel();
super.dispose();
}
void increment() {
timer?.cancel();
timer = Timer(const Duration(milliseconds: 400), () {
widget.onSubmitted(duration);
});
setState(() {
duration += widget.duration;
});
}
@override
Widget build(BuildContext context) {
return Material(
type: .transparency,
child: InkWell(
splashColor: const Color(0x44767676),
onTap: increment,
child: Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
colors: [
Color(0x88767676),
Color(0x00767676),
],
begin: .centerLeft,
end: .centerRight,
),
),
alignment: .center,
child: Column(
mainAxisSize: .min,
mainAxisAlignment: .center,
crossAxisAlignment: .center,
children: [
const Icon(
Icons.fast_rewind,
size: 24.0,
color: Colors.white,
),
const SizedBox(height: 8.0),
Text(
'快退${duration.inSeconds}',
style: const TextStyle(fontSize: 12.0, color: Colors.white),
),
],
),
),
),
);
}
}