redesign for settings page

This commit is contained in:
Arseni
2026-03-13 23:01:57 +03:00
parent 70bd7a6214
commit d601f245d4
36 changed files with 1151 additions and 262 deletions

View File

@@ -0,0 +1,62 @@
import 'package:flutter/material.dart';
import 'package:pweb/controllers/auth/account_name.dart';
import 'package:pweb/models/settings/profile_action_section.dart';
class ProfileActionsController extends ChangeNotifier {
AccountNameController? _accountNameController;
ProfileActionSection? _expandedSection;
ProfileActionSection? get expandedSection => _expandedSection;
bool get isEditingName => _accountNameController?.isEditing ?? false;
bool isExpanded(ProfileActionSection section) => _expandedSection == section;
void updateAccountNameController(AccountNameController controller) {
if (identical(_accountNameController, controller)) {
return;
}
_accountNameController?.removeListener(_handleAccountNameChanged);
_accountNameController = controller;
_accountNameController?.addListener(_handleAccountNameChanged);
}
void toggle(ProfileActionSection section) {
final isOpeningSection = !isExpanded(section);
if (isOpeningSection) {
if (_accountNameController?.isBusy ?? false) {
return;
}
_accountNameController?.cancelEditing();
}
_expandedSection = isExpanded(section) ? null : section;
notifyListeners();
}
void toggleNameEditing() {
final accountNameController = _accountNameController;
if (accountNameController == null || accountNameController.isBusy) {
return;
}
if (accountNameController.isEditing) {
accountNameController.cancelEditing();
return;
}
_expandedSection = null;
accountNameController.startEditing();
notifyListeners();
}
void _handleAccountNameChanged() {
notifyListeners();
}
@override
void dispose() {
_accountNameController?.removeListener(_handleAccountNameChanged);
super.dispose();
}
}