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'; import 'video/student_video_list.dart'; import 'video/teacher_video.dart'; class SRoomPage extends StatefulWidget { final RoomInfoDto roomInfo; const SRoomPage({super.key, required this.roomInfo}); @override State createState() => _SRoomPageState(); } class _SRoomPageState extends State { /// 显示控制栏 bool _controlsVisible = true; ///显示其他学生画面 bool _showOtherStudent = true; ///切换显示控制栏 void _toggleOverlay() { setState(() { _controlsVisible = !_controlsVisible; }); } @override Widget build(BuildContext context) { UserStore userStore = context.read(); return ChangeNotifierProvider( create: (_) => StuRoomVM( roomInfo: widget.roomInfo, uid: userStore.userInfo!.id, ), child: 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(), ), ), ///控制栏 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(), ), ), ], ), ), ); } }