diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index a478bce1..f329c390 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:floating/floating.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; @@ -282,6 +283,172 @@ class _HeaderControlState extends State { leading: const Icon(Icons.subtitles_outlined, size: 20), title: const Text('弹幕设置', style: titleStyle), ), + ListTile( + title: const Text('播放信息', style: titleStyle), + leading: const Icon(Icons.info_outline, size: 20), + onTap: () { + Player? player = + widget.controller?.videoPlayerController; + if (player == null) { + SmartDialog.showToast('播放器未初始化'); + return; + } + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: const Text('播放信息'), + content: SizedBox( + width: double.maxFinite, + child: ListView( + children: [ + ListTile( + title: const Text("Resolution"), + subtitle: Text( + '${player.state.width}x${player.state.height}'), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "Resolution\n${player.state.width}x${player.state.height}", + ), + ); + }, + ), + ListTile( + title: const Text("VideoParams"), + subtitle: Text(player.state.videoParams + .toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "VideoParams\n${player.state.videoParams}", + ), + ); + }, + ), + ListTile( + title: const Text("AudioParams"), + subtitle: Text(player.state.audioParams + .toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "AudioParams\n${player.state.audioParams}", + ), + ); + }, + ), + ListTile( + title: const Text("Media"), + subtitle: Text( + player.state.playlist.toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "Media\n${player.state.playlist}", + ), + ); + }, + ), + ListTile( + title: const Text("AudioTrack"), + subtitle: Text(player.state.track.audio + .toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "AudioTrack\n${player.state.track.audio}", + ), + ); + }, + ), + ListTile( + title: const Text("VideoTrack"), + subtitle: Text(player.state.track.video + .toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "VideoTrack\n${player.state.track.audio}", + ), + ); + }, + ), + ListTile( + title: const Text("pitch"), + subtitle: Text( + player.state.pitch.toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "pitch\n${player.state.pitch}", + ), + ); + }), + ListTile( + title: const Text("rate"), + subtitle: Text( + player.state.rate.toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "rate\n${player.state.rate}", + ), + ); + }), + ListTile( + title: const Text("AudioBitrate"), + subtitle: Text(player.state.audioBitrate + .toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "AudioBitrate\n${player.state.audioBitrate}", + ), + ); + }, + ), + ListTile( + title: const Text("Volume"), + subtitle: Text( + player.state.volume.toString()), + onTap: () { + Clipboard.setData( + ClipboardData( + text: + "Volume\n${player.state.volume}", + ), + ); + }, + ), + ], + ), + ), + actions: [ + TextButton( + onPressed: () => Get.back(), + child: Text( + '确定', + style: TextStyle( + color: Theme.of(context) + .colorScheme + .outline), + ), + ), + ], + ); + }, + ); + }) ], ), ))