main_view.dart 5.6 KB
import 'package:cp_offline_manage/pages/finance/finance_main/finance_main_view.dart';
import 'package:cp_offline_manage/pages/me/me_main/me_main_view.dart';
import 'package:cp_offline_manage/pages/report_forms/rf_marin/rf_marn_view.dart';
import 'package:cp_offline_manage/pages/ticket/ticket_main/ticket_main_view.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../../component/KeepAliveWrapper.dart';
import '../home/home_main/home_main_view.dart';
import 'main_logic.dart';

class MainPage extends GetView<MainLogic> {
  //主页
  BottomNavigationBarItem _buildHomeTabBarItem() {
    return BottomNavigationBarItem(
        backgroundColor: Colors.orange,
        icon: Image(image: AssetImage(controller.currentIndex.value == 0 ?  selectIcon[0]: unSelectIcon[0]), width: 24, height: 24,),
        label: "首页"
    );
  }
  //购物车
  BottomNavigationBarItem _buildShoppingTabBarItem() {
    return BottomNavigationBarItem(
        backgroundColor: Colors.orange,
        icon: Stack(
          clipBehavior: Clip.none,
          children: [
            Image(image: AssetImage(controller.currentIndex.value == 1 ?  selectIcon[1]: unSelectIcon[1]), width: 24, height: 24,),
            controller.shopping_dot_count.value > 0 ? Positioned(
                top: -4.0,
                right: -6.0,
                child: Container(
                  padding: EdgeInsets.all(1),
                  decoration: BoxDecoration(
                    color: Colors.red,
                    borderRadius: BorderRadius.circular(7),
                  ),
                  constraints: BoxConstraints(
                    minWidth: 14,
                    minHeight: 14,
                  ),
                  child: Text(
                    '${controller.shopping_dot_count.value < 100 ? controller.shopping_dot_count.value : "99+"}',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 8,
                    ),
                    textAlign: TextAlign.center,
                  ),
                )
            ) : Container(height:0.0,width:0.0)
          ],
        ),
        label: "票务"
    );
  }
  //品牌
  BottomNavigationBarItem _buildBrandTabBarItem() {
    return BottomNavigationBarItem(
        backgroundColor: Colors.orange,
        icon: Image(image: AssetImage(controller.currentIndex.value == 2 ?  selectIcon[2]: unSelectIcon[2]), width: 24, height: 24,),
        label: "财务"
    );
  }
  //分类
  BottomNavigationBarItem _buildClassifyTabBarItem() {
    return BottomNavigationBarItem(
        backgroundColor: Colors.orange,
        icon: Image(image: AssetImage(controller.currentIndex.value == 3 ?  selectIcon[3]: unSelectIcon[3]), width: 24, height: 24,),
        label: "报表"
    );
  }
  //个人中心
  BottomNavigationBarItem _buildUserTabBarItem() {
    return BottomNavigationBarItem(
      backgroundColor: Colors.orange,
      icon: Stack(
        clipBehavior: Clip.none,
        children: [
          Image(image: AssetImage(controller.currentIndex.value == 1 ?  selectIcon[1]: unSelectIcon[1]), width: 24, height: 24,),
          controller.userDotCount.value > 0 ?
          Positioned(
              top: -4.0,
              right: -6.0,
              child: Container(
                padding: const EdgeInsets.all(1),
                decoration: BoxDecoration(
                  color: Colors.red,
                  borderRadius: BorderRadius.circular(7),
                ),
                constraints: const BoxConstraints(
                  minWidth: 14,
                  minHeight: 14,
                ),
                child: Text(
                  '${controller.userDotCount.value < 100 ? controller.userDotCount.value : "99+"}',
                  style: const TextStyle(
                    color: Colors.white,
                    fontSize: 8,
                  ),
                  textAlign: TextAlign.center,
                ),
              )
          ) :
          const SizedBox(height:0.0,width:0.0)
        ],
      ),
      label: "我的",
    );
  }

  final pages = [
    KeepAliveWrapper(child: Home_mainPage()),
    // KeepAliveWrapper(child: Finance_mainPage()),
    // KeepAliveWrapper(child: Ticket_mainPage()),
    // KeepAliveWrapper(child: Rf_mainPage()),
    KeepAliveWrapper(child: Me_mainPage())
  ];

  final selectIcon = [
    "assets/images/bottom_icon/icon_zhuye_n.png",
    // "assets/images/bottom_icon/icon_gouwuche_n.png",
    // "assets/images/bottom_icon/icon_daili_n.png",
    // "assets/images/bottom_icon/icon_fenlei_n.png",
    "assets/images/bottom_icon/icon_geren_n.png",
  ];
  final unSelectIcon = [
    "assets/images/bottom_icon/icon_zhuye_s.png",
    // "assets/images/bottom_icon/icon_gouwuche_s.png",
    // "assets/images/bottom_icon/icon_daili_s.png",
    // "assets/images/bottom_icon/icon_fenlei_s.png",
    "assets/images/bottom_icon/icon_geren_s.png",
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        bottomNavigationBar: Obx(() => BottomNavigationBar(
          items: [_buildHomeTabBarItem(), _buildUserTabBarItem()],
          currentIndex: controller.currentIndex.value,
          // fixedColor: AppColors.primaryElement,
          type: BottomNavigationBarType.fixed,
          onTap: (index) => controller.onTabChange(index),
          selectedFontSize: 13,
          unselectedFontSize: 13,
        )),
        body: PageView.builder(
            controller: controller.pageController,
            physics: const NeverScrollableScrollPhysics(),
            itemCount: pages.length,
            itemBuilder: (context, index) => pages[index])
    );
  }
}