feat: 实现减脂体重管理App完整功能
- 实现拍照识别食物功能(集成大语言模型视觉能力) - 实现智能对话功能(集成大语言模型流式输出) - 实现食物记录和卡路里管理功能 - 实现体重记录和统计功能 - 实现健康数据管理页面 - 配置数据库表结构(用户、食物记录、体重记录) - 实现Express后端API路由 - 配置Tab导航和前端页面 - 采用健康运动配色方案
This commit is contained in:
48
client/hooks/useColorScheme.tsx
Normal file
48
client/hooks/useColorScheme.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
import { createContext, Dispatch, ReactNode, SetStateAction, useContext, useEffect, useState } from 'react';
|
||||
import { ColorSchemeName, useColorScheme as useReactNativeColorScheme, Platform } from 'react-native';
|
||||
|
||||
const ColorSchemeContext = createContext<'light' | 'dark' | null | undefined>(null);
|
||||
|
||||
const ColorSchemeProvider = function ({ children }: { children?: ReactNode }) {
|
||||
const systemColorScheme = useReactNativeColorScheme();
|
||||
const [colorScheme, setColorScheme] = useState(systemColorScheme);
|
||||
|
||||
useEffect(() => {
|
||||
setColorScheme(systemColorScheme);
|
||||
}, [systemColorScheme]);
|
||||
|
||||
useEffect(() => {
|
||||
function handleMessage(e: MessageEvent<{ event: string; colorScheme: ColorSchemeName; } | undefined>) {
|
||||
if (e.data?.event === 'coze.workbench.colorScheme') {
|
||||
const cs = e.data.colorScheme;
|
||||
if (typeof cs === 'string' && typeof setColorScheme === 'function') {
|
||||
setColorScheme(cs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Platform.OS === 'web') {
|
||||
window.addEventListener('message', handleMessage, false);
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (Platform.OS === 'web') {
|
||||
window.removeEventListener('message', handleMessage, false);
|
||||
}
|
||||
}
|
||||
}, [setColorScheme]);
|
||||
|
||||
return <ColorSchemeContext.Provider value={colorScheme}>
|
||||
{children}
|
||||
</ColorSchemeContext.Provider>
|
||||
};
|
||||
|
||||
function useColorScheme() {
|
||||
const colorScheme = useContext(ColorSchemeContext);
|
||||
return colorScheme;
|
||||
}
|
||||
|
||||
export {
|
||||
ColorSchemeProvider,
|
||||
useColorScheme,
|
||||
}
|
||||
Reference in New Issue
Block a user