feat: Flutter APK 编译成功 + Gradle 配置修复 + APK 下载部署 + 待优化清单

- 通过 qemu-user-static 实现 ARM64 主机编译 Android APK (51MB)
- 修复 Gradle: Aliyun 镜像 + PREFER_SETTINGS + JVM 内存 1536M
- 部署 APK 到 configs/downloads/, Web 下载接口已验证 (HTTP 200)
- 新增 Flutter TODO.md: 10项待优化 (P0/P1/P2 分级)
- 新增 pm_soul.md, 更新 routes.rs APK 下载路由

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
showen
2026-03-14 06:43:55 +08:00
parent bff9ec535d
commit 8ed9cb2d9d
24 changed files with 1034 additions and 20 deletions

View File

@@ -262,7 +262,7 @@ class _BleProvisionScreenState extends State<BleProvisionScreen> {
width: double.infinity,
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.18),
color: Colors.black.withValues(alpha: 0.18),
borderRadius: BorderRadius.circular(12),
border: Border.all(color: Colors.white12),
),
@@ -440,7 +440,7 @@ class _ProgressCard extends StatelessWidget {
decoration: BoxDecoration(
color: step.active
? const Color(0x1A22C55E)
: Colors.black.withOpacity(0.14),
: Colors.black.withValues(alpha: 0.14),
borderRadius: BorderRadius.circular(999),
border: Border.all(
color: step.active ? const Color(0xFF22C55E) : Colors.white24,
@@ -531,7 +531,7 @@ class _SignalBadge extends StatelessWidget {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.2),
color: Colors.black.withValues(alpha: 0.2),
borderRadius: BorderRadius.circular(12),
),
child: Row(
@@ -569,7 +569,7 @@ class _EmptyState extends StatelessWidget {
width: double.infinity,
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
borderRadius: BorderRadius.circular(16),
border: Border.all(color: Colors.white10),
),

View File

@@ -146,7 +146,7 @@ class _PlaybackScreenState extends State<PlaybackScreen> {
return Padding(
padding: const EdgeInsets.only(bottom: AppSpacing.sm),
child: Card(
color: selected ? AppColors.primary.withOpacity(0.16) : null,
color: selected ? AppColors.primary.withValues(alpha: 0.16) : null,
child: ListTile(
onTap: provider.isLoading
? null

View File

@@ -103,7 +103,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
Text('可用配置文件', style: Theme.of(context).textTheme.titleMedium),
const SizedBox(height: AppSpacing.md),
DropdownButtonFormField<String>(
value: _activeConfig,
initialValue: _activeConfig,
items: _availableConfigs
.map(
(item) => DropdownMenuItem<String>(

View File

@@ -133,7 +133,7 @@ class _TriggerScreenState extends State<TriggerScreen> {
Text('场景切换', style: Theme.of(context).textTheme.titleMedium),
const SizedBox(height: AppSpacing.md),
DropdownButtonFormField<String>(
value: provider.sceneOptions.contains(_selectedScene) ? _selectedScene : null,
initialValue: provider.sceneOptions.contains(_selectedScene) ? _selectedScene : null,
items: provider.sceneOptions
.map(
(scene) => DropdownMenuItem<String>(

View File

@@ -21,8 +21,8 @@ class AppTheme {
colorScheme: colorScheme,
scaffoldBackgroundColor: AppColors.background,
canvasColor: AppColors.background,
splashColor: AppColors.primary.withOpacity(0.12),
highlightColor: AppColors.primary.withOpacity(0.08),
splashColor: AppColors.primary.withValues(alpha: 0.12),
highlightColor: AppColors.primary.withValues(alpha: 0.08),
dividerColor: AppColors.border,
cardColor: AppColors.card,
fontFamily: 'Noto Sans SC',
@@ -43,7 +43,7 @@ class AppTheme {
cardTheme: CardThemeData(
color: AppColors.card,
elevation: 6,
shadowColor: Colors.black.withOpacity(0.20),
shadowColor: Colors.black.withValues(alpha: 0.20),
margin: EdgeInsets.zero,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppRadius.large),
@@ -70,7 +70,7 @@ class AppTheme {
navigationBarTheme: NavigationBarThemeData(
backgroundColor: AppColors.card,
height: 64,
indicatorColor: AppColors.primary.withOpacity(0.18),
indicatorColor: AppColors.primary.withValues(alpha: 0.18),
labelTextStyle: WidgetStateProperty.all(
const TextStyle(
fontSize: 12,
@@ -123,7 +123,7 @@ class AppTheme {
),
trackColor: WidgetStateProperty.resolveWith(
(states) => states.contains(WidgetState.selected)
? AppColors.primary.withOpacity(0.4)
? AppColors.primary.withValues(alpha: 0.4)
: AppColors.border,
),
),

View File

@@ -29,7 +29,7 @@ class StatusCard extends StatelessWidget {
width: 48,
height: 48,
decoration: BoxDecoration(
color: accentColor.withOpacity(0.16),
color: accentColor.withValues(alpha: 0.16),
borderRadius: BorderRadius.circular(AppRadius.medium),
),
child: Icon(icon, color: accentColor),

View File

@@ -26,7 +26,7 @@ class WifiListTile extends StatelessWidget {
width: 48,
height: 48,
decoration: BoxDecoration(
color: AppColors.info.withOpacity(0.14),
color: AppColors.info.withValues(alpha: 0.14),
borderRadius: BorderRadius.circular(AppRadius.medium),
),
child: const Icon(Icons.wifi_rounded, color: AppColors.info),