fix: Use category color from DB when editing
This commit is contained in:
@@ -34,12 +34,19 @@ class _EditCategoryDialogState extends State<EditCategoryDialog> {
|
||||
if (_selectedIconName == null || !CategoryUtils.getAvailableIcons().containsKey(_selectedIconName)) {
|
||||
_selectedIconName = CategoryUtils.getAvailableIcons().keys.first;
|
||||
}
|
||||
// Ensure the initial color exists in the available list, otherwise pick the first
|
||||
// Инициализируем цвет из существующей категории при редактировании
|
||||
_selectedColor = widget.categoryToEdit != null ? Color(widget.categoryToEdit!.color) : null;
|
||||
if (_selectedColor == null || !CategoryUtils.availableColors.contains(_selectedColor)) {
|
||||
_selectedColor = CategoryUtils.availableColors.first;
|
||||
|
||||
// Инициализируем цвет.
|
||||
// Если редактируем существующую категорию, используем ее цвет из БД.
|
||||
// Если добавляем новую, используем первый цвет из доступных.
|
||||
if (_isEditing) {
|
||||
_selectedColor = Color(widget.categoryToEdit!.color);
|
||||
} else {
|
||||
_selectedColor = CategoryUtils.availableColors.first;
|
||||
}
|
||||
|
||||
// Убедимся, что _selectedColor не null после инициализации
|
||||
// (это должно быть гарантировано логикой выше, но для безопасности)
|
||||
_selectedColor ??= CategoryUtils.availableColors.first;
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -137,6 +144,16 @@ class _EditCategoryDialogState extends State<EditCategoryDialog> {
|
||||
final isDark = theme.brightness == Brightness.dark;
|
||||
final availableIcons = CategoryUtils.getAvailableIcons(); // Get filtered icons
|
||||
|
||||
// Объединяем цвет текущей категории (если редактируем) с доступными цветами
|
||||
// для отображения в палитре. Это нужно, чтобы текущий цвет был виден,
|
||||
// даже если его нет в стандартном списке.
|
||||
final List<Color> displayedColors = List.from(CategoryUtils.availableColors);
|
||||
if (_isEditing && _selectedColor != null && !CategoryUtils.availableColors.contains(_selectedColor)) {
|
||||
// Добавляем цвет текущей категории в начало списка для отображения
|
||||
displayedColors.insert(0, _selectedColor!);
|
||||
}
|
||||
|
||||
|
||||
return AlertDialog(
|
||||
title: Text(_isEditing ? 'Редактировать категорию' : 'Добавить категорию'),
|
||||
contentPadding: const EdgeInsets.fromLTRB(24.0, 20.0, 24.0, 0.0), // Adjust padding
|
||||
@@ -212,7 +229,7 @@ class _EditCategoryDialogState extends State<EditCategoryDialog> {
|
||||
Wrap( // Используем Wrap для отображения цветов в несколько рядов
|
||||
spacing: 10.0, // Горизонтальный отступ
|
||||
runSpacing: 10.0, // Вертикальный отступ
|
||||
children: CategoryUtils.availableColors.map((color) {
|
||||
children: displayedColors.map((color) { // Используем объединенный список цветов
|
||||
final isSelected = _selectedColor == color;
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
|
||||
Reference in New Issue
Block a user