1.登录页跳转、个人中心退出优化

2.会议首页点击返回键退出APP
This commit is contained in:
fuenmao 2024-12-23 17:49:23 +08:00
parent b3ff943f1c
commit 1cabad280c
4 changed files with 324 additions and 130 deletions

View File

@ -19,7 +19,6 @@ class HomePage extends StatefulWidget {
} }
class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin { class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
final logic = Get.put(HomeLogic()); final logic = Get.put(HomeLogic());
final state = Get.find<HomeLogic>().state; final state = Get.find<HomeLogic>().state;
@ -34,6 +33,184 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
} }
@override @override
Widget build(BuildContext context) {
super.build(context);
return PopScope(
canPop: false,
onPopInvoked: (bool didPop) async {
if (didPop) {
return;
} else {
SystemNavigator.pop();
}
},
child: Scaffold(
appBar: AppBar(
surfaceTintColor: Colors.white,
elevation: 0,
toolbarHeight: 0,
systemOverlayStyle: const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Color(0xFF000000),
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.dark,
statusBarBrightness: Brightness.light,
),
backgroundColor: Colors.white,
),
body: Obx(() => Column(
children: [
Container(
width: double.infinity,
height: 44.h,
alignment: Alignment.center,
color: Colors.white,
child: Text(
'会议列表',
style: TextStyle(
fontSize: 16.sp,
color: ColorUtil.Color_51_51_51,
fontWeight: FontWeight.w500),
),
),
Expanded(
child: Container(
color: ColorUtil.Color_244_244_244,
child: SmartRefresher(
enablePullUp: true,
controller: state.refreshController,
onRefresh: logic.onRefresh,
onLoading: logic.onLoading,
child: ListView.builder(
itemBuilder: (context, index) {
return Container(
width: double.infinity,
decoration: const BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(6)),
color: Colors.white,
),
margin: EdgeInsets.only(
top: index == 0 ? 20 : 12,
bottom: index == 19 ? 20 : 0,
left: 16,
right: 16),
padding: const EdgeInsets.all(12),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
state.meetingRooms.value[index].roomName,
style: TextStyle(
fontSize: 14.sp,
color: ColorUtil.Color_89_88_88,
fontWeight: FontWeight.w500),
),
Row(
children: [
Image.asset(
'assets/images/index_persons.png',
width: 16.w,
height: 16.h,
),
Text(
'${state.meetingRooms.value[index].onlineUserCount}',
style: TextStyle(
fontSize: 12.sp,
color: ColorUtil.Color_177_177_177,
),
),
],
)
],
),
SizedBox(height: 20.h),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Text(
state.meetingRooms.value[index]
.roomNum,
style: TextStyle(
fontSize: 12.sp,
color: ColorUtil.Color_177_177_177,
),
),
SizedBox(width: 6.w),
GestureDetector(
child: Image.asset(
'assets/images/index_copy.png',
width: 16.w,
height: 16.h,
),
onTap: () {
Clipboard.setData(ClipboardData(
text: state.meetingRooms
.value[index].roomNum));
ToastUtils.showSuccess("复制成功");
},
)
],
),
GestureDetector(
child: Container(
width: 78.w,
height: 30.h,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(
Radius.circular(6)),
color: ColorUtil.Color_85_117_242,
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Text(
'进入',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
Image.asset(
'assets/images/index_right.png',
width: 16.w,
height: 16.h,
)
],
),
),
onTap: () {
Get.toNamed(Routes.meetingMainPage,
arguments: {
"roomNumber": state.meetingRooms
.value[index].roomNum
});
},
)
],
)
],
),
);
},
itemCount: state.meetingRooms.value.length,
),
),
),
)
],
))),
);
}
/*@override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return Scaffold( return Scaffold(
@ -62,8 +239,7 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
style: TextStyle( style: TextStyle(
fontSize: 16.sp, fontSize: 16.sp,
color: ColorUtil.Color_51_51_51, color: ColorUtil.Color_51_51_51,
fontWeight: FontWeight.w500 fontWeight: FontWeight.w500),
),
), ),
), ),
Expanded( Expanded(
@ -79,23 +255,28 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
return Container( return Container(
width: double.infinity, width: double.infinity,
decoration: const BoxDecoration( decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(6)), borderRadius:
BorderRadius.all(Radius.circular(6)),
color: Colors.white, color: Colors.white,
), ),
margin: EdgeInsets.only(top: index == 0 ? 20 : 12, bottom: index == 19 ? 20 : 0, left: 16, right: 16), margin: EdgeInsets.only(
top: index == 0 ? 20 : 12,
bottom: index == 19 ? 20 : 0,
left: 16,
right: 16),
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
child: Column( child: Column(
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
state.meetingRooms.value[index].roomName, state.meetingRooms.value[index].roomName,
style: TextStyle( style: TextStyle(
fontSize: 14.sp, fontSize: 14.sp,
color: ColorUtil.Color_89_88_88, color: ColorUtil.Color_89_88_88,
fontWeight: FontWeight.w500 fontWeight: FontWeight.w500),
),
), ),
Row( Row(
children: [ children: [
@ -117,12 +298,14 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
), ),
SizedBox(height: 20.h), SizedBox(height: 20.h),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
Row( Row(
children: [ children: [
Text( Text(
state.meetingRooms.value[index].roomNum, state.meetingRooms.value[index]
.roomNum,
style: TextStyle( style: TextStyle(
fontSize: 12.sp, fontSize: 12.sp,
color: ColorUtil.Color_177_177_177, color: ColorUtil.Color_177_177_177,
@ -135,8 +318,10 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
width: 16.w, width: 16.w,
height: 16.h, height: 16.h,
), ),
onTap: (){ onTap: () {
Clipboard.setData(ClipboardData(text: state.meetingRooms.value[index].roomNum)); Clipboard.setData(ClipboardData(
text: state.meetingRooms
.value[index].roomNum));
ToastUtils.showSuccess("复制成功"); ToastUtils.showSuccess("复制成功");
}, },
) )
@ -147,11 +332,13 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
width: 78.w, width: 78.w,
height: 30.h, height: 30.h,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(6)), borderRadius: const BorderRadius.all(
Radius.circular(6)),
color: ColorUtil.Color_85_117_242, color: ColorUtil.Color_85_117_242,
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment:
MainAxisAlignment.center,
children: [ children: [
Text( Text(
'进入', '进入',
@ -168,8 +355,12 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
], ],
), ),
), ),
onTap: (){ onTap: () {
Get.toNamed(Routes.meetingMainPage, arguments: {"roomNumber": state.meetingRooms.value[index].roomNum}); Get.toNamed(Routes.meetingMainPage,
arguments: {
"roomNumber": state.meetingRooms
.value[index].roomNum
});
}, },
) )
], ],
@ -184,9 +375,8 @@ class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin {
), ),
) )
], ],
)) )));
); }*/
}
@override @override
void dispose() { void dispose() {

View File

@ -52,7 +52,8 @@ class LoginLogic extends GetxController with RequestToolMixin {
if (null != res.data) { if (null != res.data) {
UserStore.to.setToken(res.data!.token); UserStore.to.setToken(res.data!.token);
UserStore.to.setUserDetailInfo(res.data!); UserStore.to.setUserDetailInfo(res.data!);
Get.toNamed(Routes.startPage); // Get.toNamed(Routes.startPage);
Get.offAllNamed(Routes.startPage);
} }
}finally{ }finally{
ToastUtils.dismiss(); ToastUtils.dismiss();
@ -77,7 +78,8 @@ class LoginLogic extends GetxController with RequestToolMixin {
if (null != res.data) { if (null != res.data) {
UserStore.to.setToken(res.data!.token); UserStore.to.setToken(res.data!.token);
UserStore.to.setUserDetailInfo(res.data!); UserStore.to.setUserDetailInfo(res.data!);
Get.toNamed(Routes.meetingMainPage, arguments: {"roomNumber": state.meetingCodeController.text}); // Get.toNamed(Routes.meetingMainPage, arguments: {"roomNumber": state.meetingCodeController.text});
Get.offAllNamed(Routes.startPage, arguments: {"roomNumber": state.meetingCodeController.text});
} }
}finally{ }finally{
ToastUtils.dismiss(); ToastUtils.dismiss();

View File

@ -351,7 +351,6 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
state.isOpenMicrophone.value = false; state.isOpenMicrophone.value = false;
state.isOpenCamera.value = false; state.isOpenCamera.value = false;
state.isOpenShare.value = false; state.isOpenShare.value = false;
state.remoteUid.value = "";
// SDK角色为观众 // SDK角色为观众
setClientRole("观众"); setClientRole("观众");
@ -362,7 +361,10 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
// //
state.floating.value?.close(); state.floating.value?.close();
// //
if(state.remoteUid.value == UserStore.to.userInfoEntity.value!.uid){
state.remoteUid.value = "";
changePageState(0); changePageState(0);
}
// //
// stopScreenCapture(); // stopScreenCapture();

View File

@ -11,6 +11,6 @@ class UserLogic extends GetxController with RequestToolMixin {
/// 退 /// 退
void logout(){ void logout(){
UserStore.to.erase(); UserStore.to.erase();
Get.offAllNamed(Routes.loginPage); Get.toNamed(Routes.loginPage);
} }
} }