diff --git a/lib/modules/meeting/bindings/meeting_binding.dart b/lib/modules/meeting/bindings/meeting_binding.dart index 85d730e73..e555c1194 100644 --- a/lib/modules/meeting/bindings/meeting_binding.dart +++ b/lib/modules/meeting/bindings/meeting_binding.dart @@ -1,4 +1,5 @@ import 'package:get/get.dart'; +import '../controllers/meeting_controller.dart'; import '../controllers/meeting_home_controller.dart'; import '../controllers/meeting_mine_controller.dart'; @@ -6,6 +7,7 @@ class MeetingBinding extends Bindings { @override void dependencies() { // 注册控制器 + Get.lazyPut(() => MeetingController()); Get.lazyPut(() => MeetingHomeController()); Get.lazyPut(() => MeetingMineController()); } diff --git a/lib/modules/meeting/controllers/meeting_controller.dart b/lib/modules/meeting/controllers/meeting_controller.dart new file mode 100644 index 000000000..39c3856fe --- /dev/null +++ b/lib/modules/meeting/controllers/meeting_controller.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../views/meeting_home_view.dart'; +import '../views/meeting_mine_view.dart'; + +class MeetingController extends GetxController { + late PageController pageController; + + final List pageList = [ + const MeetingHomeView(), + const MeetingMineView(), + ]; + + RxInt pageIndex = 0.obs; + + @override + void onInit() { + super.onInit(); + pageController = PageController(initialPage: 0); + } +} diff --git a/lib/modules/meeting/views/meeting_home_view.dart b/lib/modules/meeting/views/meeting_home_view.dart index 2884251a4..1c0eb5645 100644 --- a/lib/modules/meeting/views/meeting_home_view.dart +++ b/lib/modules/meeting/views/meeting_home_view.dart @@ -24,7 +24,7 @@ class MeetingHomeView extends GetView { onPopInvokedWithResult: controller.onPopInvokedWithResult, child: Scaffold( key: scaffoldKey, - backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], + backgroundColor: isDarkMode ? Colors.black : Colors.grey[100], appBar: _buildAppBar(isDarkMode), drawer: Drawer( width: 260.w, diff --git a/lib/modules/meeting/views/meeting_view.dart b/lib/modules/meeting/views/meeting_view.dart new file mode 100644 index 000000000..b71be602e --- /dev/null +++ b/lib/modules/meeting/views/meeting_view.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +import '../controllers/meeting_controller.dart'; + +class MeetingView extends GetView { + const MeetingView({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: PageView( + physics: const NeverScrollableScrollPhysics(), + controller: controller.pageController, + children: controller.pageList, + ), + bottomNavigationBar: Stack( + alignment: Alignment.center, + clipBehavior: Clip.none, + children: [ + Obx( + () => BottomNavigationBar( + items: const [ + BottomNavigationBarItem( + icon: Icon(Icons.folder_outlined), + activeIcon: Icon(Icons.folder), + label: '文件', + ), + BottomNavigationBarItem( + icon: SizedBox(), + activeIcon: SizedBox(), + label: '', + ), + BottomNavigationBarItem( + icon: Icon(Icons.person_outline), + activeIcon: Icon(Icons.person), + label: '我的', + ), + ], + backgroundColor: Colors.white, + currentIndex: controller.pageIndex.value, + unselectedItemColor: Colors.grey, + selectedItemColor: Colors.red, + unselectedFontSize: 10.sp, + selectedFontSize: 10.sp, + onTap: (int index) { + if (index == controller.pageIndex.value) return; + if (index == 0) { + controller.pageIndex.value = 0; + controller.pageController.jumpToPage(0); + } else { + controller.pageIndex.value = 2; + controller.pageController.jumpToPage(1); + } + }, + ), + ), + Positioned( + top: -18.w, + child: Container( + width: 60.w, + height: 60.w, + padding: EdgeInsets.all(5.w), + alignment: Alignment.center, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(60.w), + ), + child: Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: Colors.red, + borderRadius: BorderRadius.circular(60.w), + ), + child: Icon( + Icons.add, + color: Colors.white, + size: 30.w, + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/routes/app_pages.dart b/lib/routes/app_pages.dart index ccdc2e541..88f7f07c6 100644 --- a/lib/routes/app_pages.dart +++ b/lib/routes/app_pages.dart @@ -14,7 +14,7 @@ import '../modules/meeting/views/meeting_connect_view.dart'; import '../modules/meeting/views/meeting_details_view.dart'; import '../modules/meeting/bindings/meeting_record_binding.dart'; import '../modules/meeting/views/meeting_record_view.dart'; -import '../modules/meeting/views/meeting_home_view.dart'; +import '../modules/meeting/views/meeting_view.dart'; import '../modules/opus_test/bindings/opus_test_binding.dart'; import '../modules/opus_test/views/opus_test_view.dart'; import '../modules/profile/views/profile_view.dart'; @@ -149,7 +149,7 @@ abstract class AppPages { ), GetPage( name: Routes.meeting, - page: () => const MeetingHomeView(), + page: () => const MeetingView(), binding: MeetingBinding(), transition: Transition.rightToLeft, transitionDuration: Duration(milliseconds: 250),