feat: 实现日历提醒 in-app fallback 机制及通知服务重构
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user