2025-07-10 11:37:24 +08:00
|
|
|
|
import type { TabBar } from '@uni-helper/vite-plugin-uni-pages'
|
|
|
|
|
|
|
2025-07-19 21:56:22 +08:00
|
|
|
|
type FgTabBarItem = TabBar['list'][0] & {
|
|
|
|
|
|
icon: string
|
2025-08-04 14:01:39 +08:00
|
|
|
|
iconType: 'uiLib' | 'unocss' | 'iconfont' | 'local'
|
2025-07-19 21:56:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-21 14:55:06 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* tabbar 选择的策略,更详细的介绍见 tabbar.md 文件
|
2025-06-25 15:42:22 +08:00
|
|
|
|
* 0: 'NO_TABBAR' `无 tabbar`
|
|
|
|
|
|
* 1: 'NATIVE_TABBAR' `完全原生 tabbar`
|
|
|
|
|
|
* 2: 'CUSTOM_TABBAR_WITH_CACHE' `有缓存自定义 tabbar`
|
2025-06-25 15:49:14 +08:00
|
|
|
|
* 3: 'CUSTOM_TABBAR_WITHOUT_CACHE' `无缓存自定义 tabbar`
|
2025-06-21 14:55:06 +08:00
|
|
|
|
*
|
2025-07-30 14:28:07 +08:00
|
|
|
|
* 温馨提示:本文件的任何代码更改了之后,都需要重新运行,否则 pages.json 不会更新导致配置不生效
|
2025-06-21 14:55:06 +08:00
|
|
|
|
*/
|
2025-06-25 15:47:44 +08:00
|
|
|
|
export const TABBAR_MAP = {
|
|
|
|
|
|
NO_TABBAR: 0,
|
|
|
|
|
|
NATIVE_TABBAR: 1,
|
|
|
|
|
|
CUSTOM_TABBAR_WITH_CACHE: 2,
|
2025-06-25 15:49:14 +08:00
|
|
|
|
CUSTOM_TABBAR_WITHOUT_CACHE: 3,
|
2025-06-25 15:47:44 +08:00
|
|
|
|
}
|
2025-08-04 10:54:31 +08:00
|
|
|
|
|
|
|
|
|
|
// TODO:1. 通过这里切换使用tabbar的策略
|
2025-08-01 17:09:28 +08:00
|
|
|
|
export const selectedTabbarStrategy = TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
|
2025-06-21 14:55:06 +08:00
|
|
|
|
|
2025-08-04 10:54:31 +08:00
|
|
|
|
// TODO:2. 更新下面的tabbar配置
|
2025-06-25 15:47:44 +08:00
|
|
|
|
// selectedTabbarStrategy==NATIVE_TABBAR(1) 时,需要填 iconPath 和 selectedIconPath
|
2025-08-04 14:01:39 +08:00
|
|
|
|
// selectedTabbarStrategy==CUSTOM_TABBAR(2,3) 时,需要填 iconType 和 icon
|
2025-06-25 15:47:44 +08:00
|
|
|
|
// selectedTabbarStrategy==NO_TABBAR(0) 时,tabbarList 不生效
|
2025-07-19 21:56:22 +08:00
|
|
|
|
export const tabbarList: FgTabBarItem[] = [
|
2025-06-20 19:32:34 +08:00
|
|
|
|
{
|
2025-06-21 13:09:14 +08:00
|
|
|
|
iconPath: 'static/tabbar/home.png',
|
|
|
|
|
|
selectedIconPath: 'static/tabbar/homeHL.png',
|
2025-06-20 19:32:34 +08:00
|
|
|
|
pagePath: 'pages/index/index',
|
|
|
|
|
|
text: '首页',
|
2025-07-10 11:37:24 +08:00
|
|
|
|
// 选用 UI 框架自带的 icon 时,iconType 为 uiLib
|
2025-08-04 14:01:39 +08:00
|
|
|
|
// 需要自行替换vue代码中的图标代码
|
2025-06-21 19:36:04 +08:00
|
|
|
|
iconType: 'uiLib',
|
2025-08-04 14:01:39 +08:00
|
|
|
|
icon: 'home',
|
2025-06-20 19:32:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2025-06-21 13:09:14 +08:00
|
|
|
|
iconPath: 'static/tabbar/example.png',
|
|
|
|
|
|
selectedIconPath: 'static/tabbar/exampleHL.png',
|
2025-06-20 19:32:34 +08:00
|
|
|
|
pagePath: 'pages/about/about',
|
|
|
|
|
|
text: '关于',
|
2025-07-30 14:27:17 +08:00
|
|
|
|
// 注意 unocss 图标需要如下处理:(二选一)
|
2025-08-04 11:27:59 +08:00
|
|
|
|
// 1)在fg-tabbar.vue页面上引入一下并注释掉(见tabbar/index.vue代码第2行)
|
2025-07-30 14:27:17 +08:00
|
|
|
|
// 2)配置到 unocss.config.ts 的 safelist 中
|
2025-06-20 19:32:34 +08:00
|
|
|
|
iconType: 'unocss',
|
2025-08-04 14:01:39 +08:00
|
|
|
|
icon: 'i-carbon-code',
|
2025-06-20 19:32:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
// {
|
|
|
|
|
|
// pagePath: 'pages/mine/index',
|
|
|
|
|
|
// text: '我的',
|
2025-07-30 14:27:17 +08:00
|
|
|
|
// // 注意 iconfont 图标需要额外加上 'iconfont',如下
|
2025-06-20 19:32:34 +08:00
|
|
|
|
// iconType: 'iconfont',
|
2025-08-04 14:01:39 +08:00
|
|
|
|
// icon: 'iconfont icon-my',
|
|
|
|
|
|
// },
|
|
|
|
|
|
// {
|
|
|
|
|
|
// iconPath: 'static/tabbar/home.png',
|
|
|
|
|
|
// selectedIconPath: 'static/tabbar/homeHL.png',
|
|
|
|
|
|
// pagePath: 'pages/index/index',
|
|
|
|
|
|
// text: '首页',
|
|
|
|
|
|
// // 使用 ‘local’时,需要配置 icon + iconActive 2张图片(不推荐)
|
|
|
|
|
|
// // 既然已经用了自定义tabbar了,就不建议用图片了,所以不推荐
|
|
|
|
|
|
// iconType: 'local',
|
|
|
|
|
|
// icon: '/static/tabbar/home.png',
|
|
|
|
|
|
// iconActive: '/static/tabbar/homeHL.png',
|
2025-06-20 19:32:34 +08:00
|
|
|
|
// },
|
|
|
|
|
|
]
|
2025-06-20 21:40:52 +08:00
|
|
|
|
|
2025-06-25 15:47:44 +08:00
|
|
|
|
// NATIVE_TABBAR(1) 和 CUSTOM_TABBAR_WITH_CACHE(2) 时,需要tabbar缓存
|
2025-08-04 10:53:16 +08:00
|
|
|
|
export const tabbarCacheEnable = selectedTabbarStrategy === TABBAR_MAP.NATIVE_TABBAR
|
2025-06-25 15:47:44 +08:00
|
|
|
|
|| selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
|
2025-06-22 17:57:33 +08:00
|
|
|
|
|
2025-08-04 10:53:16 +08:00
|
|
|
|
// CUSTOM_TABBAR_WITH_CACHE(2) 和 CUSTOM_TABBAR_WITHOUT_CACHE(3) 时,启用自定义tabbar
|
|
|
|
|
|
export const customTabbarEnable = selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
|
|
|
|
|
|
|| selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITHOUT_CACHE
|
|
|
|
|
|
|
|
|
|
|
|
// CUSTOM_TABBAR_WITH_CACHE(2)时,需要隐藏原生tabbar
|
|
|
|
|
|
export const nativeTabbarNeedHide = selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
|
|
|
|
|
|
|
2025-07-10 11:37:24 +08:00
|
|
|
|
const _tabbar: TabBar = {
|
2025-07-19 11:08:21 +08:00
|
|
|
|
// 只有微信小程序支持 custom。App 和 H5 不生效
|
2025-07-19 10:59:07 +08:00
|
|
|
|
custom: selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE,
|
2025-06-21 12:54:52 +08:00
|
|
|
|
color: '#999999',
|
|
|
|
|
|
selectedColor: '#018d71',
|
|
|
|
|
|
backgroundColor: '#F8F8F8',
|
|
|
|
|
|
borderStyle: 'black',
|
|
|
|
|
|
height: '50px',
|
|
|
|
|
|
fontSize: '10px',
|
|
|
|
|
|
iconWidth: '24px',
|
|
|
|
|
|
spacing: '3px',
|
2025-07-19 21:56:22 +08:00
|
|
|
|
list: tabbarList as unknown as TabBar['list'],
|
2025-06-21 12:54:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-21 14:13:30 +08:00
|
|
|
|
// 0和1 需要显示底部的tabbar的各种配置,以利用缓存
|
2025-08-04 10:53:16 +08:00
|
|
|
|
export const tabBar = tabbarCacheEnable ? _tabbar : undefined
|