添加 network_info_plus 依赖以支持局域网 IP 获取;在事件信息和录制页面中增强局域网 IP 查询功能,更新相关模型以包含 scheduleId 字段;重构录制页面以改善用户体验,修复推流控制器释放逻辑。

This commit is contained in:
2026-07-17 17:31:04 +08:00
parent a4333d3bd1
commit 25a07cbd3b
16 changed files with 273 additions and 51 deletions
+27 -8
View File
@@ -2,10 +2,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:recording_tool/app/router/app_navigator.dart';
import 'package:recording_tool/core/utils/util_search_nasIp.dart';
import 'package:recording_tool/features/events/model/model_event_info.dart';
import 'package:recording_tool/features/events/state/state_event_info.dart';
import 'package:recording_tool/features/events/view_model/view_model_event_info.dart';
import 'package:recording_tool/shared/widgets/app_webview.dart';
import 'package:recording_tool/features/recording/model/model_recording_context.dart';
import 'package:recording_tool/features/recording/pages/page_record.dart';
import 'package:recording_tool/shared/widgets/widgets.dart';
class EventInfoPage extends ConsumerStatefulWidget {
@@ -24,16 +26,33 @@ class _EventInfoPageState extends ConsumerState<EventInfoPage> {
Future<void> onItemTap(EventRegistrationItem item) async {
// debugPrint('item tapped: ${item.itemName}');
// await ref.read(eventInfoProvider.notifier).requestStreamKey(item);
final streamKey = await ref
.read(eventInfoProvider.notifier)
.requestStreamKey(item);
if (streamKey == null || streamKey.isEmpty) {
return;
}
if (!mounted) return;
// final profile = ref.read(eventInfoProvider).profile;
/// 个人赛
/// 获取局域网 IP
// final ip =
// await ref.read(eventInfoProvider.notifier).getLocalIP() ?? 'sheling';
final ip = UtilSearchNasIp.nasIp ?? 'sheling';
// final ip = '192.168.1.245';
// final streamUrl = 'rtmp://$ip:19090/$streamKey';
final streamUrl = 'rtmp://$ip:19090/测试团队赛录分缓存/空中足球赛/初中组/林培伦vs周白芷';
AppNavigator.push(
WebviewPage(
url: 'https://drone.apptest.sportsx.cc/#/pages/h5/score-entry',
eventRegistrationItem: item,
playerId: widget.playerId,
RecordingPage(
recordingContext: RecordingContext(
eventTitle: item.eventName,
matchName: item.itemName,
group: item.groupName,
venue: item.matchPlace,
time: item.scheduleTime,
playerName: item.playerName,
playerPhone: item.playerPhone,
),
streamUrl: streamUrl,
),
);
}