Merge branch 'develop'
BIN
extra/play/feature_graphics_1024_500.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
extra/play/feature_graphics_1024_500.xcf
Normal file
BIN
extra/play/hi_res_512.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
extra/play/screenshots v1.0.0/S10/1-S10-collection.jpg
Normal file
After Width: | Height: | Size: 1,011 KiB |
BIN
extra/play/screenshots v1.0.0/S10/2-S10-image.jpg
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
extra/play/screenshots v1.0.0/S10/3-S10-info__basic_.jpg
Normal file
After Width: | Height: | Size: 794 KiB |
BIN
extra/play/screenshots v1.0.0/S10/4-S10-info__metadata_.jpg
Normal file
After Width: | Height: | Size: 404 KiB |
BIN
extra/play/screenshots v1.0.0/S10/5-S10-stats.jpg
Normal file
After Width: | Height: | Size: 453 KiB |
BIN
extra/play/screenshots v1.0.0/S10/6-S10-countries.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
extra/play/screenshots v1.0.0/raw/1 Collection.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
extra/play/screenshots v1.0.0/raw/2 Image.png
Normal file
After Width: | Height: | Size: 3.4 MiB |
BIN
extra/play/screenshots v1.0.0/raw/3 Info basic.png
Normal file
After Width: | Height: | Size: 533 KiB |
BIN
extra/play/screenshots v1.0.0/raw/4 Info metadata.png
Normal file
After Width: | Height: | Size: 161 KiB |
BIN
extra/play/screenshots v1.0.0/raw/5 Stats.png
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
extra/play/screenshots v1.0.0/raw/6 Countries.png
Normal file
After Width: | Height: | Size: 2.8 MiB |
|
@ -61,8 +61,9 @@ class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagMixin {
|
||||||
void removeEntries(Iterable<ImageEntry> entries) {
|
void removeEntries(Iterable<ImageEntry> entries) {
|
||||||
entries.forEach((entry) => entry.removeFromFavourites());
|
entries.forEach((entry) => entry.removeFromFavourites());
|
||||||
_rawEntries.removeWhere(entries.contains);
|
_rawEntries.removeWhere(entries.contains);
|
||||||
// TODO TLAD invalidate locations/tags, like cleaning albums
|
|
||||||
cleanEmptyAlbums(entries.map((entry) => entry.directory).toSet());
|
cleanEmptyAlbums(entries.map((entry) => entry.directory).toSet());
|
||||||
|
updateLocations();
|
||||||
|
updateTags();
|
||||||
invalidateFilterEntryCounts();
|
invalidateFilterEntryCounts();
|
||||||
eventBus.fire(EntryRemovedEvent(entries));
|
eventBus.fire(EntryRemovedEvent(entries));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import 'package:aves/widgets/common/icons.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class EmptyContent extends StatelessWidget {
|
class EmptyContent extends StatelessWidget {
|
||||||
|
@ -7,8 +6,8 @@ class EmptyContent extends StatelessWidget {
|
||||||
final AlignmentGeometry alignment;
|
final AlignmentGeometry alignment;
|
||||||
|
|
||||||
const EmptyContent({
|
const EmptyContent({
|
||||||
@required this.icon = AIcons.image,
|
@required this.icon,
|
||||||
@required this.text = 'No images',
|
@required this.text,
|
||||||
this.alignment = const FractionalOffset(.5, .35),
|
this.alignment = const FractionalOffset(.5, .35),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,12 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
|
|
||||||
mixin FeedbackMixin {
|
mixin FeedbackMixin {
|
||||||
|
Flushbar _flushbar;
|
||||||
|
|
||||||
|
Future<void> dismissFeedback() => _flushbar?.dismiss();
|
||||||
|
|
||||||
void showFeedback(BuildContext context, String message) {
|
void showFeedback(BuildContext context, String message) {
|
||||||
Flushbar(
|
_flushbar = Flushbar(
|
||||||
message: message,
|
message: message,
|
||||||
margin: const EdgeInsets.all(8),
|
margin: const EdgeInsets.all(8),
|
||||||
borderRadius: 8,
|
borderRadius: 8,
|
||||||
|
@ -14,6 +18,6 @@ mixin FeedbackMixin {
|
||||||
duration: Durations.opToastDisplay * timeDilation,
|
duration: Durations.opToastDisplay * timeDilation,
|
||||||
flushbarPosition: FlushbarPosition.TOP,
|
flushbarPosition: FlushbarPosition.TOP,
|
||||||
animationDuration: Durations.opToastAnimation,
|
animationDuration: Durations.opToastAnimation,
|
||||||
).show(context);
|
)..show(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,9 +289,10 @@ class FullscreenBodyState extends State<FullscreenBody> with SingleTickerProvide
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onVerticalPageChanged(int page) {
|
Future<void> _onVerticalPageChanged(int page) async {
|
||||||
_currentVerticalPage.value = page;
|
_currentVerticalPage.value = page;
|
||||||
if (page == transitionPage) {
|
if (page == transitionPage) {
|
||||||
|
await _actionDelegate.dismissFeedback();
|
||||||
_onLeave();
|
_onLeave();
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
}
|
}
|
||||||
|
|
48
pubspec.lock
|
@ -28,7 +28,7 @@ packages:
|
||||||
name: barcode
|
name: barcode
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.0"
|
version: "1.11.1"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -81,9 +81,11 @@ packages:
|
||||||
draggable_scrollbar:
|
draggable_scrollbar:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "../flutter-draggable-scrollbar"
|
path: "."
|
||||||
relative: true
|
ref: HEAD
|
||||||
source: path
|
resolved-ref: "3b823ae0a9def4edec62771f18e6348312bfce15"
|
||||||
|
url: "git://github.com/deckerst/flutter-draggable-scrollbar.git"
|
||||||
|
source: git
|
||||||
version: "0.0.4"
|
version: "0.0.4"
|
||||||
event_bus:
|
event_bus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
|
@ -95,9 +97,11 @@ packages:
|
||||||
expansion_tile_card:
|
expansion_tile_card:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "../expansion_tile_card"
|
path: "."
|
||||||
relative: true
|
ref: HEAD
|
||||||
source: path
|
resolved-ref: edb6b11bb448fc2f30e566a20605b37093503176
|
||||||
|
url: "git://github.com/deckerst/expansion_tile_card.git"
|
||||||
|
source: git
|
||||||
version: "1.0.3"
|
version: "1.0.3"
|
||||||
firebase_crashlytics:
|
firebase_crashlytics:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
|
@ -121,9 +125,11 @@ packages:
|
||||||
flutter_ijkplayer:
|
flutter_ijkplayer:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "../flutter_ijkplayer"
|
path: "."
|
||||||
relative: true
|
ref: HEAD
|
||||||
source: path
|
resolved-ref: "2dfc79b79b9544ecbc205c158c6246293fb2be8f"
|
||||||
|
url: "git://github.com/deckerst/flutter_ijkplayer.git"
|
||||||
|
source: git
|
||||||
version: "0.3.6"
|
version: "0.3.6"
|
||||||
flutter_markdown:
|
flutter_markdown:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
|
@ -211,7 +217,7 @@ packages:
|
||||||
name: js
|
name: js
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.1+1"
|
version: "0.6.2"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -225,7 +231,7 @@ packages:
|
||||||
name: markdown
|
name: markdown
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.5"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -309,14 +315,14 @@ packages:
|
||||||
name: permission_handler
|
name: permission_handler
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.0+hotfix.8"
|
version: "5.0.1"
|
||||||
permission_handler_platform_interface:
|
permission_handler_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_platform_interface
|
name: permission_handler_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.1"
|
||||||
petitparser:
|
petitparser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -327,9 +333,11 @@ packages:
|
||||||
photo_view:
|
photo_view:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "../photo_view"
|
path: "."
|
||||||
relative: true
|
ref: HEAD
|
||||||
source: path
|
resolved-ref: "79a3c20ee7f01e6ffb71464000c2ca8f1e28ec44"
|
||||||
|
url: "git://github.com/deckerst/photo_view.git"
|
||||||
|
source: git
|
||||||
version: "0.9.2"
|
version: "0.9.2"
|
||||||
platform_detect:
|
platform_detect:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
|
@ -351,14 +359,14 @@ packages:
|
||||||
name: printing
|
name: printing
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.4.0"
|
version: "3.5.0"
|
||||||
provider:
|
provider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: provider
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.2"
|
version: "4.1.3"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -433,7 +441,7 @@ packages:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0+2"
|
version: "1.3.1"
|
||||||
sqflite_common:
|
sqflite_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
28
pubspec.yaml
|
@ -11,7 +11,7 @@ description: A new Flutter application.
|
||||||
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 1.0.0+1
|
version: 1.0.1+2
|
||||||
|
|
||||||
# video_player (as of v0.10.8+2, backed by ExoPlayer):
|
# video_player (as of v0.10.8+2, backed by ExoPlayer):
|
||||||
# - does not support content URIs (by default, but trivial by fork)
|
# - does not support content URIs (by default, but trivial by fork)
|
||||||
|
@ -39,20 +39,20 @@ dependencies:
|
||||||
charts_flutter:
|
charts_flutter:
|
||||||
collection:
|
collection:
|
||||||
draggable_scrollbar:
|
draggable_scrollbar:
|
||||||
path: ../flutter-draggable-scrollbar
|
# path: ../flutter-draggable-scrollbar
|
||||||
# git:
|
git:
|
||||||
# url: git://github.com/deckerst/flutter-draggable-scrollbar.git
|
url: git://github.com/deckerst/flutter-draggable-scrollbar.git
|
||||||
event_bus:
|
event_bus:
|
||||||
expansion_tile_card:
|
expansion_tile_card:
|
||||||
path: ../expansion_tile_card
|
# path: ../expansion_tile_card
|
||||||
# git:
|
git:
|
||||||
# url: git://github.com/deckerst/expansion_tile_card.git
|
url: git://github.com/deckerst/expansion_tile_card.git
|
||||||
firebase_crashlytics:
|
firebase_crashlytics:
|
||||||
flushbar:
|
flushbar:
|
||||||
flutter_ijkplayer:
|
flutter_ijkplayer:
|
||||||
path: ../flutter_ijkplayer
|
# path: ../flutter_ijkplayer
|
||||||
# git:
|
git:
|
||||||
# url: git://github.com/deckerst/flutter_ijkplayer.git
|
url: git://github.com/deckerst/flutter_ijkplayer.git
|
||||||
flutter_markdown:
|
flutter_markdown:
|
||||||
flutter_native_timezone:
|
flutter_native_timezone:
|
||||||
flutter_staggered_animations:
|
flutter_staggered_animations:
|
||||||
|
@ -66,12 +66,10 @@ dependencies:
|
||||||
pedantic:
|
pedantic:
|
||||||
percent_indicator:
|
percent_indicator:
|
||||||
permission_handler:
|
permission_handler:
|
||||||
# photo_view v0.9.2 has issue https://github.com/renancaraujo/photo_view/issues/216
|
|
||||||
# https://github.com/renancaraujo/photo_view/pull/266 does not fix it
|
|
||||||
photo_view:
|
photo_view:
|
||||||
path: ../photo_view
|
# path: ../photo_view
|
||||||
# git:
|
git:
|
||||||
# url: git://github.com/deckerst/photo_view.git
|
url: git://github.com/deckerst/photo_view.git
|
||||||
printing:
|
printing:
|
||||||
provider:
|
provider:
|
||||||
screen:
|
screen:
|
||||||
|
|