Initial commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'panel_toggle_affordance.dart';
|
||||
|
||||
class SpeedButton extends StatelessWidget {
|
||||
final double currentRate;
|
||||
final bool isPanelOpen;
|
||||
final VoidCallback onTogglePanel;
|
||||
|
||||
const SpeedButton({
|
||||
super.key,
|
||||
required this.currentRate,
|
||||
required this.isPanelOpen,
|
||||
required this.onTogglePanel,
|
||||
});
|
||||
|
||||
static const speeds = [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0];
|
||||
|
||||
static String formatRate(double rate) {
|
||||
return rate == rate.roundToDouble() ? '${rate.toInt()}x' : '${rate}x';
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return PanelToggleAffordance(
|
||||
isOpen: isPanelOpen,
|
||||
onTap: onTogglePanel,
|
||||
tooltip: '播放速度',
|
||||
child: Text(
|
||||
formatRate(currentRate),
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontFeatures: [FontFeature.tabularFigures()],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user