Hibok
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

61 řádky
1.3 KiB

  1. import 'dart:async';
  2. import 'package:photo_manager/photo_manager.dart';
  3. abstract class SelectedProvider {
  4. List<AssetEntity> selectedList = [];
  5. int get selectedCount => selectedList.length;
  6. bool containsEntity(AssetEntity entity) {
  7. return selectedList.contains(entity);
  8. }
  9. int indexOfSelected(AssetEntity entity) {
  10. return selectedList.indexOf(entity);
  11. }
  12. bool isUpperLimit();
  13. bool addSelectEntity(AssetEntity entity) {
  14. if (containsEntity(entity)) {
  15. return false;
  16. }
  17. if (isUpperLimit() == true) {
  18. return false;
  19. }
  20. selectedList.add(entity);
  21. return true;
  22. }
  23. bool removeSelectEntity(AssetEntity entity) {
  24. return selectedList.remove(entity);
  25. }
  26. void compareAndRemoveEntities(List<AssetEntity> previewSelectedList) {
  27. var srcList = List.of(selectedList);
  28. selectedList.clear();
  29. srcList.forEach((entity) {
  30. if (previewSelectedList.contains(entity)) {
  31. selectedList.add(entity);
  32. }
  33. });
  34. }
  35. void sure();
  36. Future checkPickImageEntity() async {
  37. List<AssetEntity> notExistsList = [];
  38. for (var entity in selectedList) {
  39. var exists = await entity.exists;
  40. if (!exists) {
  41. notExistsList.add(entity);
  42. }
  43. }
  44. selectedList.removeWhere((e) {
  45. return notExistsList.contains(e);
  46. });
  47. }
  48. }