Browse Source

添加底部导航栏

weicu
tanlongsheng 1 year ago
parent
commit
7d840460aa
  1. 2
      lib/modules/meeting/bindings/meeting_binding.dart
  2. 22
      lib/modules/meeting/controllers/meeting_controller.dart
  3. 2
      lib/modules/meeting/views/meeting_home_view.dart
  4. 88
      lib/modules/meeting/views/meeting_view.dart
  5. 4
      lib/routes/app_pages.dart

2
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>(() => MeetingController());
Get.lazyPut<MeetingHomeController>(() => MeetingHomeController());
Get.lazyPut<MeetingMineController>(() => MeetingMineController());
}

22
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<Widget> pageList = [
const MeetingHomeView(),
const MeetingMineView(),
];
RxInt pageIndex = 0.obs;
@override
void onInit() {
super.onInit();
pageController = PageController(initialPage: 0);
}
}

2
lib/modules/meeting/views/meeting_home_view.dart

@ -24,7 +24,7 @@ class MeetingHomeView extends GetView<MeetingHomeController> {
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,

88
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<MeetingController> {
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,
),
),
),
),
],
),
);
}
}

4
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),

Loading…
Cancel
Save