diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 5711c7d39..bbf443a5f 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,4 +1,4 @@
-name: Release an APK and an App Bundle on tagging
+name: Release on tag
on:
push:
@@ -33,9 +33,11 @@ jobs:
working-directory: ${{ github.workspace }}/scripts
run: ./update_flutter_version.sh
- # `flutter test` fails if test directory is missing
- #- name: Run the unit tests.
- # run: flutter test
+ - name: Static analysis.
+ run: flutter analyze
+
+ - name: Unit tests.
+ run: flutter test
- name: Build signed artifacts.
# `KEY_JKS` should contain the result of:
@@ -86,4 +88,4 @@ jobs:
packageName: deckers.thibault.aves
releaseFile: app-release.aab
track: beta
- whatsNewDirectory: whatsnew
\ No newline at end of file
+ whatsNewDirectory: whatsnew
diff --git a/README.md b/README.md
index eb56922e6..0763ea2da 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,15 @@
-![Aves logo][] [
](https://play.google.com/store/apps/details?id=deckers.thibault.aves&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)
+![Version badge][Version badge]
+![Build badge][Build badge]
+
+
+
+
+[
](https://play.google.com/store/apps/details?id=deckers.thibault.aves&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)
Aves is a gallery and metadata explorer app. It is built for Android, with Flutter.
+

+
## Features
- support raster images: JPEG, PNG, GIF, WEBP, BMP, WBMP, HEIC (from Android Pie)
@@ -13,7 +21,7 @@ Aves is a gallery and metadata explorer app. It is built for Android, with Flutt
- favorites
- statistics
- handle intents to view or pick images
-- support Android API 24 ~ 29 (Nougat ~ Android 10)
+- support Android API 24 ~ 30 (Nougat ~ R)
## Roadmap
@@ -25,7 +33,6 @@ If time permits, I intend to eventually add these:
- gesture: long press and drag thumbnails to select multiple items
- gesture: double tap and drag image to zoom in/out (aka quick scale, one finger zoom)
- support: burst groups
-- support: Android R
- subsampling/tiling
## Known Issues
@@ -48,4 +55,5 @@ If time permits, I intend to eventually add these:
Create a file named `/android/key.properties`. It should contain a reference to a keystore for app signing, and other necessary credentials. See `/android/key_template.properties` for the expected keys.
-[Aves logo]: https://github.com/deckerst/aves/blob/master/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+[Version badge]: https://img.shields.io/github/v/release/deckerst/aves?include_prereleases&sort=semver
+[Build badge]: https://img.shields.io/github/workflow/status/deckerst/aves/Release%20on%20tag
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 157ed9498..88c48c0b9 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -4,9 +4,30 @@ analyzer:
exclude:
- lib/generated_plugin_registrant.dart
+# strong-mode:
+# implicit-casts: false
+# implicit-dynamic: false
+
linter:
rules:
- - always_declare_return_types
- - prefer_const_constructors
- - prefer_const_constructors_in_immutables
- - prefer_const_declarations
+ # from 'effective dart', excluded
+ avoid_function_literals_in_foreach_calls: false # benefit?
+ lines_longer_than_80_chars: false # nope
+ avoid_classes_with_only_static_members: false # too strict
+
+ # from 'effective dart', undecided
+ prefer_relative_imports: false # check IDE support (auto import, file move)
+ public_member_api_docs: false # maybe?
+
+ # from 'effective dart', included
+ avoid_types_on_closure_parameters: true
+ constant_identifier_names: true
+ prefer_function_declarations_over_variables: true
+ prefer_interpolation_to_compose_strings: true
+ unnecessary_brace_in_string_interps: true
+ unnecessary_lambdas: true
+
+ # misc
+ prefer_const_constructors: false # too noisy
+ prefer_const_constructors_in_immutables: true
+ prefer_const_declarations: true
diff --git a/android/app/build.gradle b/android/app/build.gradle
index c53db25ad..20c53bb68 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -41,7 +41,7 @@ if (keystorePropertiesFile.exists()) {
}
android {
- compileSdkVersion 29 // latest (or latest-1 if the sources of latest SDK are unavailable)
+ compileSdkVersion 30 // latest (or latest-1 if the sources of latest SDK are unavailable)
lintOptions {
disable 'InvalidPackage'
@@ -54,7 +54,7 @@ android {
// but Flutter (as of v1.17.3) fails to run in release mode when using Gradle plugin 4.0:
// https://github.com/flutter/flutter/issues/58247
minSdkVersion 24
- targetSdkVersion 29 // same as compileSdkVersion
+ targetSdkVersion 30 // same as compileSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
manifestPlaceholders = [googleApiKey:keystoreProperties['googleApiKey']]
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 3f54529e3..f245fb437 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -36,6 +36,14 @@
-->
+
+
+
+
+
+
+
+
dirPaths = call.argument("dirPaths");
+ if (dirPaths == null) {
+ result.error("getInaccessibleDirectories-args", "failed because of missing arguments", null);
} else {
- result.success(PermissionManager.requireVolumeAccessDialog(activity, path));
+ result.success(PermissionManager.getInaccessibleDirectories(context, dirPaths));
}
break;
}
@@ -60,15 +60,15 @@ public class StorageHandler implements MethodChannel.MethodCallHandler {
@RequiresApi(api = Build.VERSION_CODES.N)
private List