Files
slogan/lib/main.dart
T
admin ceef7bc64e feat(app): 形象照片上传 + 身形设置 + 化身构建 + 衣橱管理
- photo_upload_provider/photo_guide_page:4 类照片(大头照/正面/侧面/背面)拍照或相册上传
- body_provider/body_tune_page:身高 145-200cm / 体重 / 肤色 1-5 滑杆设置
- avatar_provider:化身构建(同步 + 异步轮询兜底)
- profile_page:形象主页聚合化身/照片/身形状态 + 登出
- wardrobe_provider/wardrobe_page/wardrobe_upload_page:网格展示 + 分类筛选 + 长按删除 + 表单上传
- AppConfig.resolveUrl 相对路径拼接;新增 /photo-guide /body-tune /wardrobe-upload 路由
2026-07-31 12:44:10 +08:00

81 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'features/auth/login_page.dart';
import 'features/commercial/commercial_page.dart';
import 'features/home/home_page.dart';
import 'features/outfit/outfit_page.dart';
import 'features/profile/body_tune_page.dart';
import 'features/profile/photo_guide_page.dart';
import 'features/profile/profile_page.dart';
import 'features/wardrobe/wardrobe_page.dart';
import 'features/wardrobe/wardrobe_upload_page.dart';
void main() {
runApp(const ProviderScope(child: SloganApp()));
}
class SloganApp extends ConsumerWidget {
const SloganApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(routerProvider);
return MaterialApp.router(
title: '我的形象穿搭',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF5C6BC0)),
useMaterial3: true,
appBarTheme: const AppBarTheme(centerTitle: true),
),
routerConfig: router,
);
}
}
/// 路由表:启动无 token 进登录页;有 token 进主框架
final routerProvider = Provider<GoRouter>((ref) {
return GoRouter(
initialLocation: '/login',
routes: [
GoRoute(
path: '/login',
builder: (ctx, state) => const LoginPage(),
),
GoRoute(
path: '/home',
builder: (ctx, state) => const HomePage(),
),
GoRoute(
path: '/profile',
builder: (ctx, state) => const ProfilePage(),
),
GoRoute(
path: '/photo-guide',
builder: (ctx, state) => const PhotoGuidePage(),
),
GoRoute(
path: '/body-tune',
builder: (ctx, state) => const BodyTunePage(),
),
GoRoute(
path: '/wardrobe',
builder: (ctx, state) => const WardrobePage(),
),
GoRoute(
path: '/wardrobe-upload',
builder: (ctx, state) => const WardrobeUploadPage(),
),
GoRoute(
path: '/outfit',
builder: (ctx, state) => const OutfitPage(),
),
GoRoute(
path: '/commercial',
builder: (ctx, state) => const CommercialPage(),
),
],
);
});