feat: 实现日历提醒 in-app fallback 机制及通知服务重构

This commit is contained in:
zl-q
2026-03-20 01:30:34 +08:00
parent 7fd536e976
commit d574128815
55 changed files with 4565 additions and 647 deletions
@@ -6,6 +6,7 @@ import '../../../../shared/widgets/app_button.dart';
import '../../../../shared/widgets/app_loading_indicator.dart';
import '../../../../shared/widgets/toast/toast.dart';
import '../../../../shared/widgets/toast/toast_type.dart';
import '../../data/services/settings_user_cache.dart';
import '../../../users/data/models/user_response.dart';
import '../../../users/data/users_api.dart';
import '../widgets/account_section_card.dart';
@@ -22,6 +23,7 @@ class _EditProfileScreenState extends State<EditProfileScreen> {
final _usernameController = TextEditingController();
final _bioController = TextEditingController();
final _usersApi = sl<UsersApi>();
final _userCache = sl<SettingsUserCache>();
UserResponse? _user;
bool _isLoading = true;
@@ -35,9 +37,21 @@ class _EditProfileScreenState extends State<EditProfileScreen> {
}
Future<void> _loadUser() async {
final cached = _userCache.cachedUser;
if (cached != null) {
setState(() {
_user = cached;
_usernameController.text = cached.username;
_bioController.text = cached.bio ?? '';
_isLoading = false;
});
return;
}
try {
final user = await _usersApi.getMe();
if (mounted) {
_userCache.set(user);
setState(() {
_user = user;
_usernameController.text = user.username;
@@ -91,7 +105,8 @@ class _EditProfileScreenState extends State<EditProfileScreen> {
username: newUsername,
bio: newBio.isEmpty ? null : newBio,
);
await _usersApi.updateMe(request);
final updatedUser = await _usersApi.updateMe(request);
_userCache.set(updatedUser);
if (mounted) {
Toast.show(context, '保存成功', type: ToastType.success);