- Android 添加相机/存储权限,拍照和相册功能可用 - AI 回复支持 Markdown 渲染(加粗/表格不再显示**乱码) - 附件按钮接线,支持拍照/相册/文件选择 - 智能体面板按钮全部接线(拍照/上传/手动录入/导航) - 侧边栏 AI 录入后自动刷新健康数据 - 运动计划页增加创建按钮 + 打卡功能 - 后端运动计划支持 AI 创建和打卡(Tool Calling) - 修复 CreateExercisePlanRequest JSON 反序列化
40 lines
1023 B
Dart
40 lines
1023 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'core/app_router.dart';
|
|
import 'core/app_theme.dart';
|
|
import 'core/navigation_provider.dart';
|
|
|
|
/// 健康管家 App 根组件
|
|
class HealthApp extends ConsumerWidget {
|
|
const HealthApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
return MaterialApp(
|
|
title: '健康管家',
|
|
debugShowCheckedModeBanner: false,
|
|
theme: AppTheme.lightTheme,
|
|
home: const _RootNavigator(),
|
|
);
|
|
}
|
|
}
|
|
|
|
/// 根导航——根据 Riverpod 路由状态切换页面
|
|
class _RootNavigator extends ConsumerWidget {
|
|
const _RootNavigator();
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final stack = ref.watch(routeStackProvider);
|
|
final current = stack.last;
|
|
|
|
return PopScope(
|
|
canPop: stack.length <= 1,
|
|
onPopInvokedWithResult: (didPop, result) {
|
|
if (!didPop) popRoute(ref);
|
|
},
|
|
child: buildPage(current),
|
|
);
|
|
}
|
|
}
|