You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.8 KiB
125 lines
3.8 KiB
import 'package:dating_touchme_app/components/home_appbar.dart';
|
|
import 'package:dating_touchme_app/controller/discover/room_controller.dart';
|
|
import 'package:dating_touchme_app/generated/assets.dart';
|
|
import 'package:dating_touchme_app/pages/discover/dating_page.dart';
|
|
import 'package:dating_touchme_app/pages/discover/party_page.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get_storage/get_storage.dart';
|
|
import 'package:tdesign_flutter/tdesign_flutter.dart';
|
|
|
|
import '../../controller/global.dart';
|
|
|
|
class DiscoverPage extends StatefulWidget {
|
|
const DiscoverPage({super.key});
|
|
|
|
@override
|
|
State<DiscoverPage> createState() => _DiscoverPageState();
|
|
}
|
|
|
|
class _DiscoverPageState extends State<DiscoverPage>
|
|
with AutomaticKeepAliveClientMixin {
|
|
late final RoomController roomController;
|
|
late final PageController _pageController;
|
|
|
|
List<String> topNav = ["相亲", "聚会脱单"];
|
|
|
|
int active = 0;
|
|
|
|
void changeNav(int active) {
|
|
setState(() {
|
|
this.active = active;
|
|
_pageController.jumpToPage(active);
|
|
});
|
|
}
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
if (Get.isRegistered<RoomController>()) {
|
|
roomController = Get.find<RoomController>();
|
|
} else {
|
|
roomController = Get.put(RoomController());
|
|
}
|
|
_pageController = PageController(initialPage: 0);
|
|
roomController.matchmakerFlag.value = GlobalData().userData!.matchmakerFlag!;
|
|
}
|
|
|
|
@override
|
|
void reassemble() {
|
|
super.reassemble();
|
|
print('reassemble 调用 - 热重载时触发');
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_pageController.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
super.build(context);
|
|
return Stack(
|
|
children: [
|
|
Image.asset(
|
|
Assets.imagesBgInformation,
|
|
fit: BoxFit.cover,
|
|
width: double.infinity,
|
|
height: double.infinity,
|
|
),
|
|
Container(
|
|
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
child: Column(
|
|
children: [
|
|
Obx(() {
|
|
return HomeAppbar(
|
|
topNav: topNav,
|
|
changeNav: changeNav,
|
|
activeIndex: active,
|
|
right: TDButton(
|
|
text: roomController.matchmakerFlag.value ? '开始直播' : '申请红娘',
|
|
width: 60.w,
|
|
height: 24.h,
|
|
padding: EdgeInsetsGeometry.symmetric(horizontal: 4.w),
|
|
size: TDButtonSize.small,
|
|
type: TDButtonType.fill,
|
|
shape: TDButtonShape.round,
|
|
theme: roomController.matchmakerFlag.value ? TDButtonTheme.danger : TDButtonTheme.primary,
|
|
textStyle: TextStyle(fontSize: 10.w),
|
|
onTap: () async {
|
|
if(roomController.matchmakerFlag.value){
|
|
await roomController.createRtcChannel();
|
|
} else {
|
|
roomController.registerMatch();
|
|
}
|
|
},
|
|
),
|
|
);
|
|
}),
|
|
Expanded(
|
|
child: PageView(
|
|
controller: _pageController,
|
|
physics: const NeverScrollableScrollPhysics(),
|
|
onPageChanged: (index) {
|
|
setState(() {
|
|
active = index;
|
|
});
|
|
},
|
|
children: const [
|
|
DatingPage(),
|
|
PartyPage(),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
|
|
@override
|
|
bool get wantKeepAlive => true;
|
|
}
|