container background color
This commit is contained in:
+1
-1
@@ -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),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user