import 'package:abroad_location/base/base_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; import '../../resource/colors.gen.dart'; import '../../router/app_pages.dart'; import 'main_controller.dart'; class MainPage extends BasePage { const MainPage({super.key}); static start() { Get.offAllNamed(RoutePath.mainTab); } @override bool immersive() { return true; } @override Widget buildBody(BuildContext context) { return Scaffold( body: buildTabBarView(), bottomNavigationBar: buildBottomBar()); } Widget buildBottomBar() { return Container( decoration: BoxDecoration( color: ColorName.white, boxShadow: [ BoxShadow( color: ColorName.black5.withOpacity(0.03), // 阴影颜色 blurRadius: 16, // 阴影模糊半径 spreadRadius: 2, // 阴影扩展半径 offset: const Offset(0, 0), // 阴影位置,向上偏移 ), ], ), child: Row(children: [ for (int i = 0; i < controller.tabData.length; i++) tabItem(controller.tabData[i], i) ]), ); } Widget tabItem(TabData tabData, int index) { return Expanded( child: Container( padding: EdgeInsets.only(top: 9.w, bottom: 15.w), child: Builder(builder: (context) { return GestureDetector( onTap: () { controller.onTabClick(index); }, child: Obx(() { return Image( image: controller.currentIndex == index ? tabData.selectIcon : tabData.unSelectIcon, width: 32.w, height: 32.w); }), ); }), )); } Widget buildTabBarView() { return TabBarView( physics: const NeverScrollableScrollPhysics(), controller: controller.tabController, children: [ for (int i = 0; i < controller.tabData.length; i++) controller.tabData[i].page ]); } }