Android Feature Optimization and Updates
Build Android Release / Build Android (push) Failing after 7s

This commit is contained in:
2026-05-21 10:31:43 +08:00
parent 31acfd4e13
commit 1d9e0a831f
19 changed files with 2506 additions and 562 deletions
@@ -121,6 +121,8 @@ class AuthProvider extends ChangeNotifier {
required String email,
required String password,
bool rememberMe = false,
String? captcha,
String? ticket,
}) async {
try {
setState(AuthState.loading);
@@ -141,6 +143,8 @@ class AuthProvider extends ChangeNotifier {
final response = await AuthService.instance.passwordLogin(
email: email,
password: password,
captcha: captcha,
ticket: ticket,
);
AppLogger.d('AuthProvider 登录成功: $response');
// 保存登录信息到当前服务器(包含完整 user 和 token
@@ -257,7 +261,9 @@ class AuthProvider extends ChangeNotifier {
}
// 调用刷新 token 接口
final newToken = await AuthService.instance.refreshToken(currentToken.refreshToken);
final newToken = await AuthService.instance.refreshToken(
currentToken.refreshToken,
);
// 更新用户信息中的 token
final updatedUser = _user!.copyWith(token: newToken);
@@ -0,0 +1,91 @@
import 'package:flutter/foundation.dart';
import '../../core/constants/quick_access_defaults.dart';
import '../../services/storage_service.dart';
class QuickAccessProvider extends ChangeNotifier {
List<QuickAccessConfig> _items = List.from(QuickAccessConfig.defaults);
bool _isLoaded = false;
List<QuickAccessConfig> get items => _items;
bool get isLoaded => _isLoaded;
Future<void> load() async {
if (_isLoaded) return;
final saved = await StorageService.instance.getString(
QuickAccessConfig.storageKey,
);
if (saved != null && saved.isNotEmpty) {
try {
_items = QuickAccessConfig.parseSaved(saved);
_isLoaded = true;
notifyListeners();
return;
} catch (_) {}
}
// 迁移 v1
final v1 = await StorageService.instance.getString(
'quick_access_shortcuts',
);
if (v1 != null && v1.isNotEmpty) {
_items = QuickAccessConfig.migrateV1(v1);
_isLoaded = true;
await _save();
notifyListeners();
return;
}
_items = List.from(QuickAccessConfig.defaults);
_isLoaded = true;
notifyListeners();
}
Future<void> addItem(QuickAccessConfig item) async {
_items = [..._items, item];
await _save();
notifyListeners();
}
Future<void> updateItem(int index, QuickAccessConfig item) async {
_items = [..._items]..[index] = item;
await _save();
notifyListeners();
}
Future<void> moveItem(int from, int to) async {
if (from < 0 ||
from >= _items.length ||
to < 0 ||
to >= _items.length ||
from == to) {
return;
}
final list = [..._items];
final item = list.removeAt(from);
list.insert(to, item);
_items = list;
await _save();
notifyListeners();
}
Future<void> deleteItem(int index) async {
_items = [..._items]..removeAt(index);
await _save();
notifyListeners();
}
Future<void> resetToDefaults() async {
_items = List.from(QuickAccessConfig.defaults);
await _save();
notifyListeners();
}
Future<void> _save() async {
await StorageService.instance.setString(
QuickAccessConfig.storageKey,
QuickAccessConfig.serialize(_items),
);
}
}