This commit is contained in:
zhutao
2025-11-21 18:21:47 +08:00
parent 9c94ee31fd
commit 5784a0a5d4
32 changed files with 734 additions and 441 deletions

View File

@@ -1,5 +1,9 @@
import 'package:app/pages/student/room/viewmodel/stu_room_vm.dart';
import 'package:app/providers/user_store.dart';
import 'package:app/request/dto/room/room_info_dto.dart';
import 'package:app/widgets/base/transition/slide_hide.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'controls/bottom_bar.dart';
import 'controls/top_bar.dart';
@@ -7,7 +11,9 @@ import 'video/student_video_list.dart';
import 'video/teacher_video.dart';
class SRoomPage extends StatefulWidget {
const SRoomPage({super.key});
final RoomInfoDto roomInfo;
const SRoomPage({super.key, required this.roomInfo});
@override
State<SRoomPage> createState() => _SRoomPageState();
@@ -29,57 +35,63 @@ class _SRoomPageState extends State<SRoomPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
//底部控制显示
GestureDetector(
onTap: _toggleOverlay,
child: Container(color: Color(0xff2c3032)),
),
//老师视频画面
TeacherVideo(),
Positioned(
right: 0,
top: 0,
bottom: 0,
child: Visibility(
visible: _showOtherStudent,
child: StudentVideoList(),
UserStore userStore = context.read<UserStore>();
return ChangeNotifierProvider<StuRoomVM>(
create: (_) => StuRoomVM(
roomInfo: widget.roomInfo,
uid: userStore.userInfo!.id,
),
child: Scaffold(
body: Stack(
children: [
//底部控制显示
GestureDetector(
onTap: _toggleOverlay,
child: Container(color: Color(0xff2c3032)),
),
),
//老师视频画面
TeacherVideo(),
///控制栏
Positioned(
top: 0,
left: 0,
right: 0,
child: SlideHide(
direction: SlideDirection.up,
hide: !_controlsVisible,
child: TopBar(
showOther: _showOtherStudent,
onOther: () {
setState(() {
_showOtherStudent = !_showOtherStudent;
});
},
Positioned(
right: 0,
top: 0,
bottom: 0,
child: Visibility(
visible: _showOtherStudent,
child: StudentVideoList(),
),
),
),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: SlideHide(
direction: SlideDirection.down,
hide: !_controlsVisible,
child: BottomBar(),
///控制栏
Positioned(
top: 0,
left: 0,
right: 0,
child: SlideHide(
direction: SlideDirection.up,
hide: !_controlsVisible,
child: TopBar(
showOther: _showOtherStudent,
onOther: () {
setState(() {
_showOtherStudent = !_showOtherStudent;
});
},
),
),
),
),
],
Positioned(
bottom: 0,
left: 0,
right: 0,
child: SlideHide(
direction: SlideDirection.down,
hide: !_controlsVisible,
child: BottomBar(),
),
),
],
),
),
);
}