Line data Source code
1 : import 'package:flutter/widgets.dart'; 2 : import 'package:mvvm_builder/mvvm_builder.dart'; 3 : import 'package:pal/src/database/entity/graphic_entity.dart'; 4 : import 'package:pal/src/ui/editor/pages/media_gallery/media_gallery_loader.dart'; 5 : 6 : import 'media_gallery.dart'; 7 : import 'media_gallery_viewmodel.dart'; 8 : 9 : class MediaGalleryPresenter 10 : extends Presenter<MediaGalleryModel, MediaGalleryView> { 11 : final String mediaId; 12 : final MediaGalleryLoader loader; 13 : 14 1 : MediaGalleryPresenter( 15 : MediaGalleryView viewInterface, { 16 : this.mediaId, 17 : @required this.loader, 18 2 : }) : super(MediaGalleryModel(), viewInterface); 19 : 20 1 : @override 21 : void onInit() { 22 2 : this.viewModel.isLoading = true; 23 2 : this.viewModel.isNoMore = false; 24 2 : this.viewModel.isLoadingMore = false; 25 : 26 4 : this.loader.load().then((MediaGalleryModel res) { 27 3 : this.viewModel.medias = res.medias; 28 2 : this.viewModel.isLoading = false; 29 2 : for (var media in res.medias) { 30 3 : if(media.id == mediaId){ 31 1 : this.selectMedia(media); 32 : break; 33 : } 34 : } 35 1 : this.refreshView(); 36 : }); 37 : } 38 : 39 0 : void loadMore() { 40 0 : if (!this.viewModel.isNoMore && !this.viewModel.isLoadingMore) { 41 0 : this.viewModel.isLoadingMore = true; 42 0 : this.refreshView(); 43 : 44 0 : this.loader.loadMore().then((value) { 45 0 : if (value.isEmpty) { 46 0 : this.viewModel.isNoMore = true; 47 : } else { 48 0 : this.viewModel.medias.addAll(value); 49 : } 50 0 : this.viewModel.isLoadingMore = false; 51 0 : this.refreshView(); 52 : }); 53 : } 54 : } 55 : 56 1 : selectMedia(GraphicEntity media) { 57 4 : if (media.id == this.viewModel.selectedMedia?.id) { 58 0 : this.viewModel.selectedMedia = null; 59 : } else { 60 2 : this.viewModel.selectedMedia = media; 61 : } 62 1 : this.refreshView(); 63 : } 64 : }