| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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<MainController> {
- 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
- ]);
- }
- }
|