feat(report): 实现AI学习报告计算页及相关组件
1. 新增报告计算进度圆环、科目卡片、完成弹窗组件 2. 重构report_computation_page,替换旧的自定义组件为新封装组件 3. 新增student_info_page的主题资源和UI重构,适配Flutter屏幕适配 4. 新增临时调试入口用于开发测试
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
// ignore: unused_import —— 调试结束切回 TabApp 时使用
|
||||
import 'package:new_learn/core/app.dart';
|
||||
import 'package:new_learn/core/network/dio_client.dart';
|
||||
import 'package:new_learn/core/providers/privacy_provider.dart';
|
||||
import 'package:new_learn/core/router/app_router.dart';
|
||||
import 'package:new_learn/core/storage/database/app_database.dart';
|
||||
import 'package:new_learn/core/storage/privacy_storage.dart';
|
||||
import 'package:new_learn/core/utils/screen_adapt_template.dart';
|
||||
|
||||
/// App 启动入口 —— 真正的业务代码都在 app.dart / pages/ 里
|
||||
///
|
||||
@@ -127,4 +131,44 @@ Future<void> main() async {
|
||||
await AppDatabase.instance.init();
|
||||
// ProviderScope:Riverpod 所有 provider 的容器,必须包在根
|
||||
runApp(const ProviderScope(child: TabApp()));
|
||||
// 临时调试用,跑完改回。
|
||||
// 注意两点:
|
||||
// 1. 页面组件用了 .w/.h/.spMin,必须包 ScreenUtilInit(与 TabApp 一致),
|
||||
// 否则 ScreenUtil 的 late 字段未初始化会抛 LateInitializationError;
|
||||
// 2. 必须用真实 appRouter(MaterialApp.router),不能用裸 MaterialApp(home:),
|
||||
// 否则页面里 context.go('/') 找不到 GoRouter,点"立即开启学习蝶变"不会跳首页。
|
||||
// runApp(const ProviderScope(child: _DebugApp()));
|
||||
}
|
||||
|
||||
/// 临时调试壳:ScreenUtilInit + 真实路由表,启动后直接进 /reportComputation
|
||||
class _DebugApp extends StatefulWidget {
|
||||
const _DebugApp();
|
||||
|
||||
@override
|
||||
State<_DebugApp> createState() => _DebugAppState();
|
||||
}
|
||||
|
||||
class _DebugAppState extends State<_DebugApp> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// 首帧后跳到调试页(默认初始位置是 '/',直接进会先闪一帧首页)
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
appRouter.go('/reportComputation');
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ScreenUtilInit(
|
||||
designSize: AppAdapt.designSizeOf(context),
|
||||
minTextAdapt: true,
|
||||
splitScreenMode: true,
|
||||
fontSizeResolver: AppAdapt.fontSizeResolver,
|
||||
builder: (context, _) => MaterialApp.router(
|
||||
debugShowCheckedModeBanner: false,
|
||||
routerConfig: appRouter,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user