container background color

This commit is contained in:
Fabian Freund
2025-12-22 10:05:59 +01:00
parent e549375178
commit b4a8432804
4 changed files with 16 additions and 16 deletions
@@ -84,7 +84,7 @@ class ContainerDraftSuggestionsScreen extends HookConsumerWidget {
SizedBox( SizedBox(
height: 48, height: 48,
child: SelectableChips( child: SelectableChips(
deleteIcon: false, enableDelete: false,
sortSelectedFirst: false, sortSelectedFirst: false,
itemId: (container) => container, itemId: (container) => container,
itemAvatar: (container) => itemAvatar: (container) =>
@@ -26,7 +26,7 @@ import 'package:nullability/nullability.dart';
import 'package:skeletonizer/skeletonizer.dart'; import 'package:skeletonizer/skeletonizer.dart';
import 'package:weblibre/core/logger.dart'; import 'package:weblibre/core/logger.dart';
import 'package:weblibre/core/routing/routes.dart'; import 'package:weblibre/core/routing/routes.dart';
import 'package:weblibre/features/geckoview/features/browser/presentation/controllers/tab_suggestions.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/controllers/tab_view_controllers.dart';
import 'package:weblibre/features/geckoview/features/tabs/data/entities/container_filter.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/entities/container_filter.dart';
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart';
@@ -91,16 +91,10 @@ class ContainerChips extends HookConsumerWidget {
children: [ children: [
Expanded( Expanded(
child: SelectableChips( child: SelectableChips(
deleteIcon: false, enableDelete: false,
itemId: (container) => container.id, itemId: (container) => container.id,
itemAvatar: (container) => Container( itemBackgroundColor: (container) =>
width: 20.0, container.color.withValues(alpha: 0.5),
height: 20.0,
decoration: BoxDecoration(
color: container.color,
shape: BoxShape.circle,
),
),
itemLabel: (container) => itemLabel: (container) =>
ContainerTitle(container: container), ContainerTitle(container: container),
itemBadgeCount: (container) => container.tabCount, itemBadgeCount: (container) => container.tabCount,
@@ -3,7 +3,6 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/core/routing/routes.dart'; import 'package:weblibre/core/routing/routes.dart';
import 'package:weblibre/features/user/domain/services/user_backup.dart'; import 'package:weblibre/features/user/domain/services/user_backup.dart';
@@ -55,18 +55,21 @@ class _GestureWrapper extends StatelessWidget {
} }
class SelectableChips<T extends S, S, K> extends StatelessWidget { class SelectableChips<T extends S, S, K> extends StatelessWidget {
final List<T> availableItems; final Iterable<T> availableItems;
final List<Widget> prefixListItems; final List<Widget> prefixListItems;
final S? selectedItem; final S? selectedItem;
final int maxCount; final int maxCount;
final bool deleteIcon; final bool enableDelete;
final bool sortSelectedFirst; final bool sortSelectedFirst;
final ScrollController? scrollController;
final K Function(S item) itemId; final K Function(S item) itemId;
final Widget Function(T item) itemLabel; final Widget Function(T item) itemLabel;
final Widget? Function(T item)? itemAvatar; final Widget? Function(T item)? itemAvatar;
final String? Function(T item)? itemTooltip; final String? Function(T item)? itemTooltip;
final int? Function(T item)? itemBadgeCount; final int? Function(T item)? itemBadgeCount;
final Color? Function(T item)? itemBackgroundColor;
final Widget Function(Widget child, S item)? itemWrap; final Widget Function(Widget child, S item)? itemWrap;
@@ -81,15 +84,17 @@ class SelectableChips<T extends S, S, K> extends StatelessWidget {
this.itemBadgeCount, this.itemBadgeCount,
this.itemWrap, this.itemWrap,
this.itemTooltip, this.itemTooltip,
this.itemBackgroundColor,
this.prefixListItems = const [], this.prefixListItems = const [],
required this.availableItems, required this.availableItems,
this.selectedItem, this.selectedItem,
this.maxCount = 25, this.maxCount = 25,
this.deleteIcon = true, this.enableDelete = true,
this.onSelected, this.onSelected,
this.onDeleted, this.onDeleted,
this.onLongPress, this.onLongPress,
this.sortSelectedFirst = true, this.sortSelectedFirst = true,
this.scrollController,
super.key, super.key,
}); });
@@ -110,6 +115,7 @@ class SelectableChips<T extends S, S, K> extends StatelessWidget {
} }
return FadingScroll( return FadingScroll(
controller: scrollController,
fadingSize: 15, fadingSize: 15,
builder: (context, controller) { builder: (context, controller) {
return ListView.builder( return ListView.builder(
@@ -148,7 +154,7 @@ class SelectableChips<T extends S, S, K> extends StatelessWidget {
onDeleted?.call(item); onDeleted?.call(item);
} }
}, },
onDeleted: deleteIcon onDeleted: enableDelete
? () { ? () {
onDeleted?.call(item); onDeleted?.call(item);
} }
@@ -156,6 +162,7 @@ class SelectableChips<T extends S, S, K> extends StatelessWidget {
label: itemLabel.call(item), label: itemLabel.call(item),
avatar: itemAvatar?.call(item), avatar: itemAvatar?.call(item),
tooltip: itemTooltip?.call(item), tooltip: itemTooltip?.call(item),
backgroundColor: itemBackgroundColor?.call(item),
), ),
), ),
), ),