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:
@@ -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),
|
||||
),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>(
|
||||
|
||||
@@ -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>(
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user