aves/lib/widgets/common/action_controls/quick_choosers/album_chooser.dart
2024-07-24 00:32:42 +02:00

51 lines
1.8 KiB
Dart

import 'dart:async';
import 'package:aves/model/filters/album.dart';
import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/source/collection_source.dart';
import 'package:aves/widgets/common/action_controls/quick_choosers/common/menu.dart';
import 'package:aves/widgets/common/action_controls/quick_choosers/filter_quick_chooser_mixin.dart';
import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class AlbumQuickChooser extends StatelessWidget with FilterQuickChooserMixin<String> {
final ValueNotifier<String?> valueNotifier;
@override
final List<String> options;
final bool blurred;
final PopupMenuPosition chooserPosition;
final Stream<Offset> pointerGlobalPosition;
const AlbumQuickChooser({
super.key,
required this.valueNotifier,
required this.options,
required this.blurred,
required this.chooserPosition,
required this.pointerGlobalPosition,
});
@override
Widget build(BuildContext context) {
return MenuQuickChooser<String>(
valueNotifier: valueNotifier,
options: options,
autoReverse: true,
blurred: blurred,
chooserPosition: chooserPosition,
pointerGlobalPosition: pointerGlobalPosition,
maxTotalOptionCount: FilterQuickChooserMixin.maxTotalOptionCount,
itemHeight: computeItemHeight(context),
contentWidth: computeLargestItemWidth,
itemBuilder: itemBuilder,
emptyBuilder: (context) => Text(context.l10n.albumEmpty),
);
}
@override
CollectionFilter buildFilter(BuildContext context, String option) {
final source = context.read<CollectionSource>();
return AlbumFilter(option, source.getAlbumDisplayName(context, option));
}
}