81 lines
1.9 KiB
Dart
81 lines
1.9 KiB
Dart
import 'package:app/config/config.dart';
|
||
import 'package:flutter/material.dart';
|
||
import 'package:agora_rtc_engine/agora_rtc_engine.dart';
|
||
import '../../request/dto/room/rtc_token_dto.dart';
|
||
|
||
/// 视频画面显示状态
|
||
enum VideoState {
|
||
/// 正常显示视频
|
||
normal,
|
||
|
||
/// 摄像头关闭
|
||
closed,
|
||
|
||
/// 掉线 / 未连接
|
||
offline,
|
||
|
||
/// 加载中(进房、拉流等)
|
||
loading,
|
||
|
||
/// 错误状态(拉流失败等)
|
||
error,
|
||
}
|
||
|
||
// class VideoSurface extends StatelessWidget {
|
||
// final VideoState state;
|
||
//
|
||
// const VideoSurface({super.key, this.state = VideoState.normal});
|
||
//
|
||
// @override
|
||
// Widget build(BuildContext context) {
|
||
// String stateText = switch (state) {
|
||
// VideoState.closed => "摄像头已关闭",
|
||
// VideoState.offline => "掉线",
|
||
// VideoState.loading => "加载中",
|
||
// VideoState.error => "错误",
|
||
// _ => "未知",
|
||
// };
|
||
// //如果不是正常
|
||
// if (state != VideoState.normal) {
|
||
// return Align(
|
||
// child: Text(stateText, style: TextStyle(color: Colors.white70)),
|
||
// );
|
||
// }
|
||
// return Container();
|
||
// }
|
||
// }
|
||
|
||
class VideoSurface extends StatefulWidget {
|
||
final RtcTokenDto rtcToken;
|
||
final String remoteUid;
|
||
|
||
const VideoSurface({
|
||
super.key,
|
||
required this.rtcToken,
|
||
required this.remoteUid,
|
||
});
|
||
|
||
@override
|
||
State<VideoSurface> createState() => _VideoSurfaceState();
|
||
}
|
||
|
||
class _VideoSurfaceState extends State<VideoSurface> {
|
||
RtcEngine? _engine;
|
||
|
||
void _init() async {
|
||
_engine = createAgoraRtcEngine();
|
||
//初始化 RtcEngine,设置频道场景为 channelProfileLiveBroadcasting(直播场景)
|
||
await _engine!.initialize(
|
||
RtcEngineContext(
|
||
appId: Config.swAppId,
|
||
channelProfile: ChannelProfileType.channelProfileLiveBroadcasting,
|
||
),
|
||
);
|
||
}
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
return const Placeholder();
|
||
}
|
||
}
|