mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
feat: 新增播放信息查看功能
This commit is contained in:
@@ -4,6 +4,7 @@ import 'dart:math';
|
|||||||
|
|
||||||
import 'package:floating/floating.dart';
|
import 'package:floating/floating.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -282,6 +283,172 @@ class _HeaderControlState extends State<HeaderControl> {
|
|||||||
leading: const Icon(Icons.subtitles_outlined, size: 20),
|
leading: const Icon(Icons.subtitles_outlined, size: 20),
|
||||||
title: const Text('弹幕设置', style: titleStyle),
|
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),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
|
|||||||
Reference in New Issue
Block a user