自习室优化ok
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import 'package:agora_rtc_engine/agora_rtc_engine.dart';
|
||||
import 'package:app/pages/student/room/viewmodel/stu_room_vm.dart';
|
||||
import 'package:app/widgets/room/video_surface.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
@@ -8,6 +10,9 @@ class StudentVideoList extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final vm = context.watch<StuRoomVM>();
|
||||
if (vm.roomInfo.roomStatus != 1) {
|
||||
return SizedBox();
|
||||
}
|
||||
return SafeArea(
|
||||
child: Container(
|
||||
width: 250,
|
||||
@@ -26,6 +31,17 @@ class StudentVideoList extends StatelessWidget {
|
||||
color: Color(0xff373c3e),
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
child: VideoSurface(
|
||||
user: item,
|
||||
child: AgoraVideoView(
|
||||
controller: VideoViewController(
|
||||
rtcEngine: vm.engine!,
|
||||
canvas: VideoCanvas(
|
||||
uid: item.rtcUid,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
|
||||
@@ -1,60 +1,83 @@
|
||||
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 StatefulWidget {
|
||||
class TeacherVideo extends StatelessWidget {
|
||||
const TeacherVideo({super.key});
|
||||
|
||||
@override
|
||||
State<TeacherVideo> createState() => _TeacherVideoState();
|
||||
}
|
||||
|
||||
class _TeacherVideoState extends State<TeacherVideo> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final vm = context.read<StuRoomVM>();
|
||||
final vm = context.watch<StuRoomVM>();
|
||||
final teacherInfo = vm.teacherInfo;
|
||||
|
||||
///没开始
|
||||
if (vm.roomStatus == 0) {
|
||||
return _empty("自习室还没开始");
|
||||
}
|
||||
|
||||
///开始
|
||||
if (vm.roomStatus == 1 && vm.engine != null) {
|
||||
if (teacherInfo == null) {
|
||||
return _empty("老师不在自习室内");
|
||||
}
|
||||
if (teacherInfo.online == 0) {
|
||||
return _empty("老师掉线了,请耐心等待");
|
||||
}
|
||||
return AgoraVideoView(
|
||||
controller: VideoViewController(
|
||||
rtcEngine: vm.engine!,
|
||||
canvas: VideoCanvas(
|
||||
uid: vm.teacherInfo!.userId,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
///结束
|
||||
if (vm.roomStatus == 2) {
|
||||
return _empty("自习室已结束");
|
||||
}
|
||||
return _empty("加载中");
|
||||
}
|
||||
|
||||
Widget _empty(String title) {
|
||||
return SafeArea(
|
||||
child: Align(
|
||||
child: Text(
|
||||
title,
|
||||
style: TextStyle(color: Colors.white),
|
||||
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: 0,
|
||||
left: 0,
|
||||
child: Container(
|
||||
width: 150,
|
||||
color: Colors.black,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1 / 1.2,
|
||||
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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user