添加登录和后端校验
完成后端设计(未在本仓库体现),通过安全的手段完成了登录鉴权
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { useCallback, useEffect } from 'react'
|
||||
import Taro, { useDidShow } from '@tarojs/taro'
|
||||
import { applyPageBackground } from '../utils/themeBackground'
|
||||
|
||||
export interface UseStatusBarOptions {
|
||||
/** 顶部系统状态栏(iOS 时间/电量)文字颜色模式:
|
||||
* - 'auto'(默认):跟随当前 App 主题,浅色黑字、深色白字
|
||||
* - 'light':强制白字(顶部是深色图片/背景的页面用)
|
||||
* - 'dark':强制黑字
|
||||
*/
|
||||
mode?: 'auto' | 'light' | 'dark'
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步当前页面的 iOS 系统状态栏(时间、电量)文字颜色。
|
||||
* 每个页面只调用一次,避免全局 Provider 与页面生命周期竞争写入。
|
||||
*/
|
||||
export function useStatusBar(resolvedTheme: 'light' | 'dark', options: UseStatusBarOptions = {}) {
|
||||
const { mode = 'auto' } = options
|
||||
|
||||
const apply = useCallback(() => {
|
||||
const isDarkText = mode === 'dark' || (mode === 'auto' && resolvedTheme === 'light')
|
||||
const frontColor = isDarkText ? '#000000' : '#ffffff'
|
||||
const bgColor = isDarkText ? '#ffffff' : '#1e1e2f'
|
||||
|
||||
Taro.setNavigationBarColor({ frontColor, backgroundColor: bgColor })
|
||||
// 同步页面背景色,确保自定义导航区(状态栏下方、胶囊按钮区域)跟随主题,
|
||||
// 避免深色模式下顶部残留白色条带。
|
||||
// 注意:iOS 上顶部/底部窗口背景需分别用 backgroundColorTop / Bottom 指定,
|
||||
// 仅设置 backgroundColor 在 iOS 上无法覆盖顶部导航区。
|
||||
applyPageBackground(resolvedTheme, bgColor)
|
||||
}, [mode, resolvedTheme])
|
||||
|
||||
// 主题切换后立即更新当前页面。
|
||||
useEffect(apply, [apply])
|
||||
|
||||
// 导航返回、切换 Tab 或从后台恢复后,以当前页面主题重新覆盖原生默认值。
|
||||
useDidShow(apply)
|
||||
}
|
||||
Reference in New Issue
Block a user