5 changed files with 115 additions and 3 deletions
@ -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); |
||||
|
} |
||||
|
} |
||||
@ -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, |
||||
|
), |
||||
|
), |
||||
|
), |
||||
|
), |
||||
|
], |
||||
|
), |
||||
|
); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue