home_page_state.model.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'package:collection/collection.dart';
  2. import 'package:openapi/api.dart';
  3. class HomePageState {
  4. final bool isMultiSelectEnable;
  5. final Set<AssetResponseDto> selectedItems;
  6. final Set<String> selectedDateGroup;
  7. HomePageState({
  8. required this.isMultiSelectEnable,
  9. required this.selectedItems,
  10. required this.selectedDateGroup,
  11. });
  12. HomePageState copyWith({
  13. bool? isMultiSelectEnable,
  14. Set<AssetResponseDto>? selectedItems,
  15. Set<String>? selectedDateGroup,
  16. }) {
  17. return HomePageState(
  18. isMultiSelectEnable: isMultiSelectEnable ?? this.isMultiSelectEnable,
  19. selectedItems: selectedItems ?? this.selectedItems,
  20. selectedDateGroup: selectedDateGroup ?? this.selectedDateGroup,
  21. );
  22. }
  23. @override
  24. String toString() =>
  25. 'HomePageState(isMultiSelectEnable: $isMultiSelectEnable, selectedItems: $selectedItems, selectedDateGroup: $selectedDateGroup)';
  26. @override
  27. bool operator ==(Object other) {
  28. if (identical(this, other)) return true;
  29. final setEquals = const DeepCollectionEquality().equals;
  30. return other is HomePageState &&
  31. other.isMultiSelectEnable == isMultiSelectEnable &&
  32. setEquals(other.selectedItems, selectedItems) &&
  33. setEquals(other.selectedDateGroup, selectedDateGroup);
  34. }
  35. @override
  36. int get hashCode =>
  37. isMultiSelectEnable.hashCode ^
  38. selectedItems.hashCode ^
  39. selectedDateGroup.hashCode;
  40. }