main_view.dart 2.1 KB

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