- 新增「设置」Tab,支持物品分类的增删改(数据库持久化) - 物品分类由硬编码枚举迁移为动态分类,通过 CategoriesContext 全局共享 - items 表新增 unit(单位)、spec(规格)字段,附带旧库迁移 - markers 表 CHECK 约束扩展支持第 4 楼(楼顶),附带重建表迁移 - SVG 地图渲染:overdraw 预渲染提升清晰度,嵌入图片改用原生 Image 渲染 - FoldableLayout 改为 showDetail prop 控制动画宽度 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import { Tabs } from 'expo-router'
|
|
import { useEffect, useState } from 'react'
|
|
import { StatusBar } from 'expo-status-bar'
|
|
import { ActivityIndicator, View } from 'react-native'
|
|
import { SafeAreaProvider } from 'react-native-safe-area-context'
|
|
import { initDatabase } from '../src/db/database'
|
|
import { CategoriesProvider } from '../src/features/settings/CategoriesContext'
|
|
|
|
export default function RootLayout() {
|
|
const [dbReady, setDbReady] = useState(false)
|
|
|
|
useEffect(() => {
|
|
initDatabase()
|
|
.then(() => setDbReady(true))
|
|
.catch((err) => {
|
|
console.error('数据库初始化失败:', err)
|
|
setDbReady(true)
|
|
})
|
|
}, [])
|
|
|
|
if (!dbReady) {
|
|
return (
|
|
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
|
|
<ActivityIndicator size="large" />
|
|
</View>
|
|
)
|
|
}
|
|
|
|
return (
|
|
<SafeAreaProvider>
|
|
<StatusBar style="auto" />
|
|
<CategoriesProvider>
|
|
<Tabs
|
|
screenOptions={{
|
|
headerShown: true,
|
|
tabBarActiveTintColor: '#10B981',
|
|
}}
|
|
>
|
|
<Tabs.Screen
|
|
name="index"
|
|
options={{
|
|
title: '登记',
|
|
tabBarLabel: '登记',
|
|
headerShown: false,
|
|
}}
|
|
/>
|
|
<Tabs.Screen
|
|
name="summary"
|
|
options={{
|
|
title: '汇总',
|
|
tabBarLabel: '汇总',
|
|
}}
|
|
/>
|
|
<Tabs.Screen
|
|
name="settings"
|
|
options={{
|
|
title: '设置',
|
|
tabBarLabel: '设置',
|
|
}}
|
|
/>
|
|
</Tabs>
|
|
</CategoriesProvider>
|
|
</SafeAreaProvider>
|
|
)
|
|
}
|