main_view.dart 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import 'package:clean/handler/event_handler.dart';
  2. import 'package:clean/module/calendar/calendar_view.dart';
  3. import 'package:clean/module/more/more_view.dart';
  4. import 'package:clean/utils/expand.dart';
  5. import 'package:convex_bottom_bar/convex_bottom_bar.dart';
  6. import 'package:flutter_screenutil/flutter_screenutil.dart';
  7. import '../../base/base_page.dart';
  8. import '../../data/consts/event_report_id.dart';
  9. import '../../resource/assets.gen.dart';
  10. import '../../router/app_pages.dart';
  11. import '../home/home_view.dart';
  12. import 'main_controller.dart';
  13. import 'package:flutter/Material.dart';
  14. import 'package:get/get.dart';
  15. class MainTabPage extends BasePage<MainController> {
  16. MainTabPage({super.key});
  17. final pages = [
  18. const CalendarPage(),
  19. const HomePage(),
  20. const MorePage(),
  21. ];
  22. static void start() {
  23. Get.offNamed(RoutePath.mainTab, arguments: {});
  24. }
  25. @override
  26. bool immersive() {
  27. return true;
  28. }
  29. @override
  30. bool statusBarDarkFont() {
  31. // TODO: implement statusBarDarkFont
  32. return false;
  33. }
  34. @override
  35. Widget buildBody(BuildContext context) {
  36. return PopScope(
  37. canPop: false,
  38. child: Scaffold(
  39. bottomNavigationBar: buildBottomAppBar(),
  40. drawerEdgeDragWidth: 0,
  41. body: Obx(() {
  42. return pages[controller.currentIndex];
  43. }),
  44. ),
  45. );
  46. }
  47. Widget buildBottomAppBar() {
  48. return StyleProvider(
  49. style: BottomTabBarStyle(),
  50. child: ConvexAppBar(
  51. height: 65.h,
  52. backgroundColor: "#0F0F16".color,
  53. activeColor: Colors.transparent,
  54. items: [
  55. TabItem(
  56. icon: Assets.images.iconTabCalendarUnselect.image(),
  57. activeIcon: Assets.images.iconTabCalendarSelected.image()),
  58. TabItem(
  59. icon: Assets.images.iconTabHomeUnselect.image(),
  60. activeIcon: Assets.images.iconTabHomeSelected.image()),
  61. TabItem(
  62. icon: Assets.images.iconTabMoreUnselect.image(),
  63. activeIcon: Assets.images.iconTabMoreSelected.image()),
  64. ],
  65. initialActiveIndex: controller.currentIndex,
  66. onTap: (int i) {
  67. if (controller.currentIndex != i) {
  68. if (controller.currentIndex == 0) {
  69. EventHandler.report(EventId.event_10000);
  70. } else if (controller.currentIndex == 1) {
  71. EventHandler.report(EventId.event_10001);
  72. } else if (controller.currentIndex == 2) {
  73. EventHandler.report(EventId.event_10002);
  74. }
  75. controller.changeIndex(i);
  76. }
  77. },
  78. ),
  79. );
  80. }
  81. }
  82. // tabbar样式
  83. class BottomTabBarStyle extends StyleHook {
  84. @override
  85. double get activeIconSize => 52.w;
  86. @override
  87. double get activeIconMargin => 12.w;
  88. @override
  89. double get iconSize => 24.w;
  90. @override
  91. TextStyle textStyle(Color color, String? fontFamily) {
  92. // TODO: implement textStyle
  93. return TextStyle(fontSize: 20, color: color);
  94. }
  95. }