8bc50e07ef
- scripts/flutter-env.sh: toolchain PATH/JAVA_HOME/ANDROID_HOME + pub 镜像 env - apps/mobile: flutter create (com.photolive.photo_live, android+ios) - Android minSdk 24 / targetSdk 36;INTERNET 权限(main manifest,debug+release) - iOS Info.plist:本地网络 ATS 例外 + 相册/相机用途说明(zh+en) - 依赖接入:riverpod / drift(+sqlite3_flutter_libs) / dio / secure_storage / image_picker / camera / qr_flutter / path_provider / path / intl - l10n:l10n.yaml + app_zh/app_en arb(20 键),gen-l10n(zh 模板,非空 getter) - 基线:Material 3 主题、/login→/home 命名路由、底部导航(相册/队列/设置桩)、 locale provider 脚手架(Task 10 完成切换) - flutter analyze 零问题;widget 测试通过;debug apk 构建成功 (MuMu 冒烟因宿主 commit 内存耗尽未完成,Task 2 重试) Co-Authored-By: Claude Code <noreply@anthropic.com>
35 lines
1.1 KiB
Dart
35 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import '../l10n/app_localizations.dart';
|
|
import '../pages/home_page.dart';
|
|
import '../pages/login_page.dart';
|
|
import 'locale_controller.dart';
|
|
import 'theme.dart';
|
|
|
|
/// App 根组件:主题 + l10n 委托 + 基线路由。
|
|
///
|
|
/// 基线路由为命名路由(/login → /home);Task 3+ 随页面增长再评估
|
|
/// 是否迁移 go_router,当前保持零额外依赖。
|
|
class PhotoLiveApp extends ConsumerWidget {
|
|
const PhotoLiveApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final locale = ref.watch(localeSettingsProvider);
|
|
return MaterialApp(
|
|
onGenerateTitle: (context) => AppLocalizations.of(context).appName,
|
|
theme: AppTheme.light,
|
|
darkTheme: AppTheme.dark,
|
|
locale: locale,
|
|
supportedLocales: AppLocalizations.supportedLocales,
|
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
routes: {
|
|
'/login': (context) => const LoginPage(),
|
|
'/home': (context) => const HomePage(),
|
|
},
|
|
home: const LoginPage(),
|
|
);
|
|
}
|
|
}
|