Files
xueguang_flutter_app/lib/pages/student/room/video/teacher_video.dart
zhutao f5ce40063f 1
2025-12-01 16:00:16 +08:00

87 lines
2.5 KiB
Dart

import 'package:agora_rtc_engine/agora_rtc_engine.dart';
import 'package:app/widgets/base/dialog/config_dialog.dart';
import 'package:app/widgets/room/other_widget.dart';
import 'package:app/widgets/room/video_surface.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import '../viewmodel/stu_room_vm.dart';
class TeacherVideo extends StatelessWidget {
const TeacherVideo({super.key});
@override
Widget build(BuildContext context) {
final vm = context.watch<StuRoomVM>();
final teacherInfo = vm.teacherInfo;
return PopScope(
canPop: false,
onPopInvokedWithResult: (didPop, _) {
if (!didPop) {
showDialog(
context: context,
builder: (context) {
return ConfigDialog(
content: "是否退出自习室",
onCancel: () {
context.pop();
},
onConfirm: () {
context.pop();
context.pop();
},
);
},
);
}
},
child: IgnorePointer(
child: Stack(
alignment: Alignment.bottomCenter,
children: [
VideoSurface(
user: teacherInfo!,
child: AgoraVideoView(
controller: VideoViewController(
rtcEngine: vm.engine!,
canvas: VideoCanvas(
uid: teacherInfo.rtcUid,
),
),
),
),
Positioned(
top: 30,
left: 10,
child: Visibility(
visible: !vm.cameraClose,
child: Container(
width: 200,
color: Colors.black,
child: AspectRatio(
aspectRatio: 16 / 9,
child: AgoraVideoView(
controller: VideoViewController(
rtcEngine: vm.engine!,
canvas: const VideoCanvas(uid: 0),
),
),
),
),
),
),
if (vm.selfInfo?.handup == 1)
Positioned(
bottom: 60,
child: HandRaiseButton(
onTap: vm.changeHandSwitch,
),
),
],
),
),
);
}
}