upgraded flutter to stable v2.0.1 + packages upgrade
This commit is contained in:
parent
a06013bbf7
commit
abd76511fc
35 changed files with 213 additions and 214 deletions
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
|
@ -15,7 +15,7 @@ jobs:
|
||||||
- uses: subosito/flutter-action@v1
|
- uses: subosito/flutter-action@v1
|
||||||
with:
|
with:
|
||||||
channel: stable
|
channel: stable
|
||||||
flutter-version: '1.22.6'
|
flutter-version: '2.0.1'
|
||||||
|
|
||||||
- name: Clone the repository.
|
- name: Clone the repository.
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
6
.github/workflows/release.yml
vendored
6
.github/workflows/release.yml
vendored
|
@ -17,7 +17,7 @@ jobs:
|
||||||
- uses: subosito/flutter-action@v1
|
- uses: subosito/flutter-action@v1
|
||||||
with:
|
with:
|
||||||
channel: stable
|
channel: stable
|
||||||
flutter-version: '1.22.6'
|
flutter-version: '2.0.1'
|
||||||
|
|
||||||
# Workaround for this Android Gradle Plugin issue (supposedly fixed in AGP 4.1):
|
# Workaround for this Android Gradle Plugin issue (supposedly fixed in AGP 4.1):
|
||||||
# https://issuetracker.google.com/issues/144111441
|
# https://issuetracker.google.com/issues/144111441
|
||||||
|
@ -50,8 +50,8 @@ jobs:
|
||||||
echo "${{ secrets.KEY_JKS }}" > release.keystore.asc
|
echo "${{ secrets.KEY_JKS }}" > release.keystore.asc
|
||||||
gpg -d --passphrase "${{ secrets.KEY_JKS_PASSPHRASE }}" --batch release.keystore.asc > $AVES_STORE_FILE
|
gpg -d --passphrase "${{ secrets.KEY_JKS_PASSPHRASE }}" --batch release.keystore.asc > $AVES_STORE_FILE
|
||||||
rm release.keystore.asc
|
rm release.keystore.asc
|
||||||
flutter build apk --bundle-sksl-path shaders_1.22.6.sksl.json
|
flutter build apk --bundle-sksl-path shaders_2.0.1.sksl.json
|
||||||
flutter build appbundle --bundle-sksl-path shaders_1.22.6.sksl.json
|
flutter build appbundle --bundle-sksl-path shaders_2.0.1.sksl.json
|
||||||
rm $AVES_STORE_FILE
|
rm $AVES_STORE_FILE
|
||||||
env:
|
env:
|
||||||
AVES_STORE_FILE: ${{ github.workspace }}/key.jks
|
AVES_STORE_FILE: ${{ github.workspace }}/key.jks
|
||||||
|
|
|
@ -2,6 +2,12 @@
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
### Added
|
||||||
|
- Korean translation
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Upgraded Flutter to stable v2.0.1
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- various TIFF decoding fixes
|
- various TIFF decoding fixes
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ repositories {
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
|
||||||
implementation 'androidx.core:core-ktx:1.5.0-beta01' // v1.5.0-alpha02+ for ShortcutManagerCompat.setDynamicShortcuts
|
implementation 'androidx.core:core-ktx:1.5.0-beta02' // v1.5.0-alpha02+ for ShortcutManagerCompat.setDynamicShortcuts
|
||||||
implementation 'androidx.exifinterface:exifinterface:1.3.2'
|
implementation 'androidx.exifinterface:exifinterface:1.3.2'
|
||||||
implementation 'com.commonsware.cwac:document:0.4.1'
|
implementation 'com.commonsware.cwac:document:0.4.1'
|
||||||
implementation 'com.drewnoakes:metadata-extractor:2.15.0'
|
implementation 'com.drewnoakes:metadata-extractor:2.15.0'
|
||||||
|
|
|
@ -8,11 +8,10 @@ buildscript {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
// TODO TLAD upgrade AGP to 4+ when this lands on stable: https://github.com/flutter/flutter/commit/8dd0de7f580972079f610a56a689b0a9c414f81e
|
classpath 'com.android.tools.build:gradle:4.1.2'
|
||||||
classpath 'com.android.tools.build:gradle:3.6.4'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.3.5'
|
classpath 'com.google.gms:google-services:4.3.5'
|
||||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.0'
|
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,4 +15,3 @@ android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
# Kotlin code style for this project: "official" or "obsolete":
|
# Kotlin code style for this project: "official" or "obsolete":
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
android.enableR8=true
|
|
||||||
|
|
|
@ -8,13 +8,12 @@ class UriPicture extends PictureProvider<UriPicture> {
|
||||||
const UriPicture({
|
const UriPicture({
|
||||||
@required this.uri,
|
@required this.uri,
|
||||||
@required this.mimeType,
|
@required this.mimeType,
|
||||||
this.colorFilter,
|
ColorFilter colorFilter,
|
||||||
}) : assert(uri != null);
|
}) : assert(uri != null),
|
||||||
|
super(colorFilter);
|
||||||
|
|
||||||
final String uri, mimeType;
|
final String uri, mimeType;
|
||||||
|
|
||||||
final ColorFilter colorFilter;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<UriPicture> obtainKey(PictureConfiguration configuration) {
|
Future<UriPicture> obtainKey(PictureConfiguration configuration) {
|
||||||
return SynchronousFuture<UriPicture>(this);
|
return SynchronousFuture<UriPicture>(this);
|
||||||
|
|
|
@ -625,7 +625,7 @@ class AvesEntry {
|
||||||
}
|
}
|
||||||
|
|
||||||
// when the entry image itself changed (e.g. after rotation)
|
// when the entry image itself changed (e.g. after rotation)
|
||||||
void _onImageChanged(int oldDateModifiedSecs, int oldRotationDegrees, bool oldIsFlipped) async {
|
Future<void> _onImageChanged(int oldDateModifiedSecs, int oldRotationDegrees, bool oldIsFlipped) async {
|
||||||
if (oldDateModifiedSecs != dateModifiedSecs || oldRotationDegrees != rotationDegrees || oldIsFlipped != isFlipped) {
|
if (oldDateModifiedSecs != dateModifiedSecs || oldRotationDegrees != rotationDegrees || oldIsFlipped != isFlipped) {
|
||||||
await EntryCache.evict(uri, mimeType, oldDateModifiedSecs, oldRotationDegrees, oldIsFlipped);
|
await EntryCache.evict(uri, mimeType, oldDateModifiedSecs, oldRotationDegrees, oldIsFlipped);
|
||||||
imageChangeNotifier.notifyListeners();
|
imageChangeNotifier.notifyListeners();
|
||||||
|
|
|
@ -76,6 +76,7 @@ class AlbumFilter extends CollectionFilter {
|
||||||
@override
|
@override
|
||||||
String get category => type;
|
String get category => type;
|
||||||
|
|
||||||
|
// key `album-{path}` is expected by test driver
|
||||||
@override
|
@override
|
||||||
String get key => '$type-$album';
|
String get key => '$type-$album';
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,7 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateAfterMove({
|
Future<void> updateAfterMove({
|
||||||
@required Set<AvesEntry> todoEntries,
|
@required Set<AvesEntry> todoEntries,
|
||||||
@required Set<AvesEntry> favouriteEntries,
|
@required Set<AvesEntry> favouriteEntries,
|
||||||
@required bool copy,
|
@required bool copy,
|
||||||
|
|
|
@ -141,10 +141,7 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
|
||||||
|
|
||||||
Widget _buildAppBarTitle() {
|
Widget _buildAppBarTitle() {
|
||||||
if (collection.isBrowsing) {
|
if (collection.isBrowsing) {
|
||||||
Widget title = Text(
|
Widget title = Text(AvesApp.mode == AppMode.pick ? context.l10n.collectionPickPageTitle : context.l10n.collectionPageTitle);
|
||||||
AvesApp.mode == AppMode.pick ? context.l10n.collectionPickPageTitle : context.l10n.collectionPageTitle,
|
|
||||||
key: Key('appbar-title'),
|
|
||||||
);
|
|
||||||
if (AvesApp.mode == AppMode.main) {
|
if (AvesApp.mode == AppMode.main) {
|
||||||
title = SourceStateAwareAppBarTitle(
|
title = SourceStateAwareAppBarTitle(
|
||||||
title: title,
|
title: title,
|
||||||
|
|
|
@ -221,8 +221,8 @@ class _CollectionScrollViewState extends State<CollectionScrollView> {
|
||||||
appBar,
|
appBar,
|
||||||
collection.isEmpty
|
collection.isEmpty
|
||||||
? SliverFillRemaining(
|
? SliverFillRemaining(
|
||||||
child: _buildEmptyCollectionPlaceholder(collection),
|
|
||||||
hasScrollBody: false,
|
hasScrollBody: false,
|
||||||
|
child: _buildEmptyCollectionPlaceholder(collection),
|
||||||
)
|
)
|
||||||
: SectionedListSliver<AvesEntry>(),
|
: SectionedListSliver<AvesEntry>(),
|
||||||
BottomPaddingSliver(),
|
BottomPaddingSliver(),
|
||||||
|
|
|
@ -88,8 +88,8 @@ class DraggableScrollbar extends StatefulWidget {
|
||||||
children: [
|
children: [
|
||||||
ScrollLabel(
|
ScrollLabel(
|
||||||
animation: labelAnimation,
|
animation: labelAnimation,
|
||||||
child: labelText,
|
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
|
child: labelText,
|
||||||
),
|
),
|
||||||
scrollThumb,
|
scrollThumb,
|
||||||
],
|
],
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:math';
|
||||||
import 'package:aves/theme/durations.dart';
|
import 'package:aves/theme/durations.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
|
import 'package:pedantic/pedantic.dart';
|
||||||
|
|
||||||
class Sweeper extends StatefulWidget {
|
class Sweeper extends StatefulWidget {
|
||||||
final WidgetBuilder builder;
|
final WidgetBuilder builder;
|
||||||
|
@ -89,11 +90,11 @@ class _SweeperState extends State<Sweeper> with SingleTickerProviderStateMixin {
|
||||||
valueListenable: _angleAnimationController,
|
valueListenable: _angleAnimationController,
|
||||||
builder: (context, value, child) {
|
builder: (context, value, child) {
|
||||||
return ClipPath(
|
return ClipPath(
|
||||||
child: widget.builder(context),
|
|
||||||
clipper: _SweepClipPath(
|
clipper: _SweepClipPath(
|
||||||
startAngle: _angle.value,
|
startAngle: _angle.value,
|
||||||
sweepAngle: widget.sweepAngle,
|
sweepAngle: widget.sweepAngle,
|
||||||
),
|
),
|
||||||
|
child: widget.builder(context),
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
@ -115,7 +116,7 @@ class _SweeperState extends State<Sweeper> with SingleTickerProviderStateMixin {
|
||||||
_isAppearing = false;
|
_isAppearing = false;
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
_angleAnimationController.reset();
|
_angleAnimationController.reset();
|
||||||
_angleAnimationController.forward();
|
unawaited(_angleAnimationController.forward());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
|
|
|
@ -66,7 +66,6 @@ class AvesFilterChip extends StatefulWidget {
|
||||||
|
|
||||||
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
|
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
|
||||||
final touchArea = Size(40, 40);
|
final touchArea = Size(40, 40);
|
||||||
// TODO TLAD check menu is within safe area, when this lands on stable: https://github.com/flutter/flutter/commit/cfc8ec23b633da1001359e384435e8333c9d3733
|
|
||||||
final selectedAction = await showMenu<ChipAction>(
|
final selectedAction = await showMenu<ChipAction>(
|
||||||
context: context,
|
context: context,
|
||||||
position: RelativeRect.fromRect(tapPosition & touchArea, Offset.zero & overlay.size),
|
position: RelativeRect.fromRect(tapPosition & touchArea, Offset.zero & overlay.size),
|
||||||
|
|
|
@ -18,6 +18,7 @@ ScrollThumbBuilder avesScrollThumbBuilder({
|
||||||
margin: EdgeInsets.only(right: .5),
|
margin: EdgeInsets.only(right: .5),
|
||||||
padding: EdgeInsets.all(2),
|
padding: EdgeInsets.all(2),
|
||||||
child: ClipPath(
|
child: ClipPath(
|
||||||
|
clipper: ArrowClipper(),
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 20.0,
|
width: 20.0,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
@ -25,7 +26,6 @@ ScrollThumbBuilder avesScrollThumbBuilder({
|
||||||
borderRadius: BorderRadius.circular(12.0),
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
clipper: ArrowClipper(),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
return (backgroundColor, thumbAnimation, labelAnimation, height, {labelText}) {
|
return (backgroundColor, thumbAnimation, labelAnimation, height, {labelText}) {
|
||||||
|
|
|
@ -264,13 +264,13 @@ class _MagnifierCoreState extends State<MagnifierCore> with TickerProviderStateM
|
||||||
);
|
);
|
||||||
|
|
||||||
return MagnifierGestureDetector(
|
return MagnifierGestureDetector(
|
||||||
child: child,
|
|
||||||
onDoubleTap: onDoubleTap,
|
onDoubleTap: onDoubleTap,
|
||||||
onScaleStart: onScaleStart,
|
onScaleStart: onScaleStart,
|
||||||
onScaleUpdate: onScaleUpdate,
|
onScaleUpdate: onScaleUpdate,
|
||||||
onScaleEnd: onScaleEnd,
|
onScaleEnd: onScaleEnd,
|
||||||
hitDetector: this,
|
hitDetector: this,
|
||||||
onTapUp: widget.onTap == null ? null : onTap,
|
onTapUp: widget.onTap == null ? null : onTap,
|
||||||
|
child: child,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,9 +86,9 @@ class _MagnifierGestureDetectorState extends State<MagnifierGestureDetector> {
|
||||||
);
|
);
|
||||||
|
|
||||||
return RawGestureDetector(
|
return RawGestureDetector(
|
||||||
child: widget.child,
|
|
||||||
gestures: gestures,
|
gestures: gestures,
|
||||||
behavior: widget.behavior ?? HitTestBehavior.translucent,
|
behavior: widget.behavior ?? HitTestBehavior.translucent,
|
||||||
|
child: widget.child,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,11 +71,11 @@ class Magnifier extends StatelessWidget {
|
||||||
));
|
));
|
||||||
|
|
||||||
return MagnifierCore(
|
return MagnifierCore(
|
||||||
child: child,
|
|
||||||
controller: controller,
|
controller: controller,
|
||||||
scaleStateCycle: scaleStateCycle,
|
scaleStateCycle: scaleStateCycle,
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
applyScale: applyScale,
|
applyScale: applyScale,
|
||||||
|
child: child,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
@ -134,13 +134,13 @@ class DecoratedFilterChip extends StatelessWidget {
|
||||||
if (pinned)
|
if (pinned)
|
||||||
AnimatedPadding(
|
AnimatedPadding(
|
||||||
padding: EdgeInsets.only(right: padding),
|
padding: EdgeInsets.only(right: padding),
|
||||||
|
duration: Durations.chipDecorationAnimation,
|
||||||
child: DecoratedIcon(
|
child: DecoratedIcon(
|
||||||
AIcons.pin,
|
AIcons.pin,
|
||||||
color: FilterGridPage.detailColor,
|
color: FilterGridPage.detailColor,
|
||||||
shadows: [Constants.embossShadow],
|
shadows: [Constants.embossShadow],
|
||||||
size: iconSize,
|
size: iconSize,
|
||||||
),
|
),
|
||||||
duration: Durations.chipDecorationAnimation,
|
|
||||||
),
|
),
|
||||||
if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album))
|
if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album))
|
||||||
AnimatedPadding(
|
AnimatedPadding(
|
||||||
|
|
|
@ -292,6 +292,7 @@ class _SectionedContentState<T extends CollectionFilter> extends State<_Sectione
|
||||||
Widget content;
|
Widget content;
|
||||||
if (empty) {
|
if (empty) {
|
||||||
content = SliverFillRemaining(
|
content = SliverFillRemaining(
|
||||||
|
hasScrollBody: false,
|
||||||
child: Selector<MediaQueryData, double>(
|
child: Selector<MediaQueryData, double>(
|
||||||
selector: (context, mq) => mq.effectiveBottomPadding,
|
selector: (context, mq) => mq.effectiveBottomPadding,
|
||||||
builder: (context, mqPaddingBottom, child) {
|
builder: (context, mqPaddingBottom, child) {
|
||||||
|
@ -301,7 +302,6 @@ class _SectionedContentState<T extends CollectionFilter> extends State<_Sectione
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
hasScrollBody: false,
|
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
content = SectionedListSliver<FilterGridItem<T>>();
|
content = SectionedListSliver<FilterGridItem<T>>();
|
||||||
|
|
|
@ -87,7 +87,6 @@ class FilterNavigationPage<T extends CollectionFilter> extends StatelessWidget {
|
||||||
void _showMenu(BuildContext context, T filter, Offset tapPosition) async {
|
void _showMenu(BuildContext context, T filter, Offset tapPosition) async {
|
||||||
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
|
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
|
||||||
final touchArea = Size(40, 40);
|
final touchArea = Size(40, 40);
|
||||||
// TODO TLAD check menu is within safe area, when this lands on stable: https://github.com/flutter/flutter/commit/cfc8ec23b633da1001359e384435e8333c9d3733
|
|
||||||
final selectedAction = await showMenu<ChipAction>(
|
final selectedAction = await showMenu<ChipAction>(
|
||||||
context: context,
|
context: context,
|
||||||
position: RelativeRect.fromRect(tapPosition & touchArea, Offset.zero & overlay.size),
|
position: RelativeRect.fromRect(tapPosition & touchArea, Offset.zero & overlay.size),
|
||||||
|
|
|
@ -90,13 +90,13 @@ class ExpandableFilterRow extends StatelessWidget {
|
||||||
titleRow,
|
titleRow,
|
||||||
AnimatedSwitcher(
|
AnimatedSwitcher(
|
||||||
duration: Durations.filterRowExpandAnimation,
|
duration: Durations.filterRowExpandAnimation,
|
||||||
child: filterChips,
|
|
||||||
layoutBuilder: (currentChild, previousChildren) => Stack(
|
layoutBuilder: (currentChild, previousChildren) => Stack(
|
||||||
children: [
|
children: [
|
||||||
...previousChildren,
|
...previousChildren,
|
||||||
if (currentChild != null) currentChild,
|
if (currentChild != null) currentChild,
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
child: filterChips,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -105,7 +105,7 @@ class ExpandableFilterRow extends StatelessWidget {
|
||||||
|
|
||||||
Widget _buildFilterChip(CollectionFilter filter) {
|
Widget _buildFilterChip(CollectionFilter filter) {
|
||||||
return AvesFilterChip(
|
return AvesFilterChip(
|
||||||
// key `album-...` is expected by test driver
|
// key `album-{path}` is expected by test driver
|
||||||
key: Key(filter.key),
|
key: Key(filter.key),
|
||||||
filter: filter,
|
filter: filter,
|
||||||
heroType: heroTypeBuilder?.call(filter) ?? HeroType.onTap,
|
heroType: heroTypeBuilder?.call(filter) ?? HeroType.onTap,
|
||||||
|
|
|
@ -171,41 +171,40 @@ class _EntryViewerStackState extends State<EntryViewerStack> with SingleTickerPr
|
||||||
return SynchronousFuture(false);
|
return SynchronousFuture(false);
|
||||||
},
|
},
|
||||||
child: ValueListenableProvider<HeroInfo>.value(
|
child: ValueListenableProvider<HeroInfo>.value(
|
||||||
value: _heroInfoNotifier,
|
value: _heroInfoNotifier,
|
||||||
builder: (context, snapshot) {
|
child: NotificationListener(
|
||||||
return NotificationListener(
|
onNotification: (notification) {
|
||||||
onNotification: (notification) {
|
if (notification is FilterNotification) {
|
||||||
if (notification is FilterNotification) {
|
_goToCollection(notification.filter);
|
||||||
_goToCollection(notification.filter);
|
} else if (notification is ViewStateNotification) {
|
||||||
} else if (notification is ViewStateNotification) {
|
_updateViewState(notification.uri, notification.viewState);
|
||||||
_updateViewState(notification.uri, notification.viewState);
|
} else if (notification is EntryDeletedNotification) {
|
||||||
} else if (notification is EntryDeletedNotification) {
|
_onEntryDeleted(context, notification.entry);
|
||||||
_onEntryDeleted(context, notification.entry);
|
}
|
||||||
}
|
return false;
|
||||||
return false;
|
},
|
||||||
},
|
child: Stack(
|
||||||
child: Stack(
|
children: [
|
||||||
children: [
|
ViewerVerticalPageView(
|
||||||
ViewerVerticalPageView(
|
collection: collection,
|
||||||
collection: collection,
|
entryNotifier: _entryNotifier,
|
||||||
entryNotifier: _entryNotifier,
|
videoControllers: _videoControllers,
|
||||||
videoControllers: _videoControllers,
|
multiPageControllers: _multiPageControllers,
|
||||||
multiPageControllers: _multiPageControllers,
|
verticalPager: _verticalPager,
|
||||||
verticalPager: _verticalPager,
|
horizontalPager: _horizontalPager,
|
||||||
horizontalPager: _horizontalPager,
|
onVerticalPageChanged: _onVerticalPageChanged,
|
||||||
onVerticalPageChanged: _onVerticalPageChanged,
|
onHorizontalPageChanged: _onHorizontalPageChanged,
|
||||||
onHorizontalPageChanged: _onHorizontalPageChanged,
|
onImageTap: () => _overlayVisible.value = !_overlayVisible.value,
|
||||||
onImageTap: () => _overlayVisible.value = !_overlayVisible.value,
|
onImagePageRequested: () => _goToVerticalPage(imagePage),
|
||||||
onImagePageRequested: () => _goToVerticalPage(imagePage),
|
onViewDisposed: (uri) => _updateViewState(uri, null),
|
||||||
onViewDisposed: (uri) => _updateViewState(uri, null),
|
|
||||||
),
|
|
||||||
_buildTopOverlay(),
|
|
||||||
_buildBottomOverlay(),
|
|
||||||
BottomGestureAreaProtector(),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
);
|
_buildTopOverlay(),
|
||||||
}),
|
_buildBottomOverlay(),
|
||||||
|
BottomGestureAreaProtector(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,9 +314,7 @@ class _EntryViewerStackState extends State<EntryViewerStack> with SingleTickerPr
|
||||||
return AnimatedBuilder(
|
return AnimatedBuilder(
|
||||||
animation: _verticalScrollNotifier,
|
animation: _verticalScrollNotifier,
|
||||||
builder: (context, child) => Positioned(
|
builder: (context, child) => Positioned(
|
||||||
// TODO TLAD replace when using Flutter version adapted for null safety
|
bottom: (_verticalPager.position.hasPixels ? _verticalPager.offset : 0) - mqHeight,
|
||||||
// bottom: (_verticalPager.position.hasPixels ? _verticalPager.offset : 0) - mqHeight,
|
|
||||||
bottom: (_verticalPager.offset ?? 0) - mqHeight,
|
|
||||||
child: child,
|
child: child,
|
||||||
),
|
),
|
||||||
child: child,
|
child: child,
|
||||||
|
@ -462,7 +459,7 @@ class _EntryViewerStackState extends State<EntryViewerStack> with SingleTickerPr
|
||||||
if (_overlayVisible.value) {
|
if (_overlayVisible.value) {
|
||||||
_showSystemUI();
|
_showSystemUI();
|
||||||
if (animate) {
|
if (animate) {
|
||||||
_overlayAnimationController.forward();
|
await _overlayAnimationController.forward();
|
||||||
} else {
|
} else {
|
||||||
_overlayAnimationController.value = _overlayAnimationController.upperBound;
|
_overlayAnimationController.value = _overlayAnimationController.upperBound;
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,7 +186,9 @@ class _OwnerPropState extends State<OwnerProp> {
|
||||||
text: context.l10n.viewerInfoLabelOwner,
|
text: context.l10n.viewerInfoLabelOwner,
|
||||||
style: InfoRowGroup.keyStyle,
|
style: InfoRowGroup.keyStyle,
|
||||||
),
|
),
|
||||||
WidgetSpan(
|
// `com.android.shell` is the package reported
|
||||||
|
// for images copied to the device by ADB for Test Driver
|
||||||
|
if (_ownerPackage != 'com.android.shell') WidgetSpan(
|
||||||
alignment: PlaceholderAlignment.middle,
|
alignment: PlaceholderAlignment.middle,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 4),
|
padding: EdgeInsets.symmetric(horizontal: 4),
|
||||||
|
|
|
@ -72,6 +72,7 @@ class _EntryLeafletMapState extends State<EntryLeafletMap> with AutomaticKeepAli
|
||||||
zoom: widget.initialZoom,
|
zoom: widget.initialZoom,
|
||||||
interactive: false,
|
interactive: false,
|
||||||
),
|
),
|
||||||
|
mapController: _mapController,
|
||||||
children: [
|
children: [
|
||||||
_buildMapLayer(),
|
_buildMapLayer(),
|
||||||
ScaleLayerWidget(
|
ScaleLayerWidget(
|
||||||
|
@ -91,7 +92,6 @@ class _EntryLeafletMapState extends State<EntryLeafletMap> with AutomaticKeepAli
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
mapController: _mapController,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,6 @@ class _WelcomePageState extends State<WelcomePage> {
|
||||||
|
|
||||||
final button = ElevatedButton(
|
final button = ElevatedButton(
|
||||||
key: Key('continue-button'),
|
key: Key('continue-button'),
|
||||||
child: Text(context.l10n.continueButtonLabel),
|
|
||||||
onPressed: _hasAcceptedTerms
|
onPressed: _hasAcceptedTerms
|
||||||
? () {
|
? () {
|
||||||
settings.hasAcceptedTerms = true;
|
settings.hasAcceptedTerms = true;
|
||||||
|
@ -124,6 +123,7 @@ class _WelcomePageState extends State<WelcomePage> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
|
child: Text(context.l10n.continueButtonLabel),
|
||||||
);
|
);
|
||||||
|
|
||||||
return MediaQuery.of(context).orientation == Orientation.portrait
|
return MediaQuery.of(context).orientation == Orientation.portrait
|
||||||
|
|
205
pubspec.lock
205
pubspec.lock
|
@ -7,14 +7,14 @@ packages:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "12.0.0"
|
version: "14.0.0"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.40.6"
|
version: "0.41.2"
|
||||||
ansicolor:
|
ansicolor:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -42,7 +42,7 @@ packages:
|
||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.0-nullsafety.1"
|
version: "2.5.0"
|
||||||
barcode:
|
barcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -56,21 +56,21 @@ packages:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0-nullsafety.1"
|
version: "2.1.0"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0-nullsafety.3"
|
version: "1.1.0"
|
||||||
charcode:
|
charcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: charcode
|
name: charcode
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0-nullsafety.1"
|
version: "1.2.0"
|
||||||
charts_common:
|
charts_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -91,49 +91,42 @@ packages:
|
||||||
name: cli_util
|
name: cli_util
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.3.0"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0-nullsafety.1"
|
version: "1.1.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0-nullsafety.3"
|
version: "1.15.0"
|
||||||
connectivity:
|
connectivity:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: connectivity
|
name: connectivity
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "3.0.2"
|
||||||
connectivity_for_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: connectivity_for_web
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.3.1+4"
|
|
||||||
connectivity_macos:
|
connectivity_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: connectivity_macos
|
name: connectivity_macos
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0+7"
|
version: "0.2.0"
|
||||||
connectivity_platform_interface:
|
connectivity_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: connectivity_platform_interface
|
name: connectivity_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "2.0.0"
|
||||||
console_log_handler:
|
console_log_handler:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -161,7 +154,7 @@ packages:
|
||||||
name: coverage
|
name: coverage
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.14.2"
|
version: "0.15.2"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -182,7 +175,7 @@ packages:
|
||||||
name: event_bus
|
name: event_bus
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "2.0.0"
|
||||||
expansion_tile_card:
|
expansion_tile_card:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -198,21 +191,21 @@ packages:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0-nullsafety.1"
|
version: "1.2.0"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.3"
|
version: "1.0.0"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.0-nullsafety.2"
|
version: "6.0.0"
|
||||||
firebase:
|
firebase:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -233,7 +226,7 @@ packages:
|
||||||
name: firebase_analytics_platform_interface
|
name: firebase_analytics_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3"
|
version: "1.1.0"
|
||||||
firebase_analytics_web:
|
firebase_analytics_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -306,13 +299,13 @@ packages:
|
||||||
name: flutter_highlight
|
name: flutter_highlight
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0"
|
version: "0.7.0"
|
||||||
flutter_ijkplayer:
|
flutter_ijkplayer:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: HEAD
|
ref: HEAD
|
||||||
resolved-ref: c1b7f25e2a3bc67ab7b30561af49a62ae9a8c409
|
resolved-ref: d4e079404ba8e4f82a7e053ffdc47af787a61c3b
|
||||||
url: "git://github.com/deckerst/flutter_ijkplayer.git"
|
url: "git://github.com/deckerst/flutter_ijkplayer.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.3.7"
|
version: "0.3.7"
|
||||||
|
@ -334,7 +327,7 @@ packages:
|
||||||
name: flutter_localized_locales
|
name: flutter_localized_locales
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "2.0.1"
|
||||||
flutter_map:
|
flutter_map:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -355,21 +348,21 @@ packages:
|
||||||
name: flutter_plugin_android_lifecycle
|
name: flutter_plugin_android_lifecycle
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.11"
|
version: "2.0.0"
|
||||||
flutter_staggered_animations:
|
flutter_staggered_animations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_staggered_animations
|
name: flutter_staggered_animations
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.2"
|
version: "1.0.0"
|
||||||
flutter_svg:
|
flutter_svg:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_svg
|
name: flutter_svg
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.1"
|
version: "0.19.3"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -405,35 +398,35 @@ packages:
|
||||||
name: glob
|
name: glob
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "2.0.0"
|
||||||
google_api_availability:
|
google_api_availability:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: google_api_availability
|
name: google_api_availability
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.4"
|
version: "3.0.0"
|
||||||
google_maps_flutter:
|
google_maps_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter
|
name: google_maps_flutter
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "2.0.1"
|
||||||
google_maps_flutter_platform_interface:
|
google_maps_flutter_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter_platform_interface
|
name: google_maps_flutter_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "2.0.0"
|
||||||
highlight:
|
highlight:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: highlight
|
name: highlight
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0"
|
version: "0.7.0"
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -447,7 +440,7 @@ packages:
|
||||||
name: http_multi_server
|
name: http_multi_server
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "3.0.0"
|
||||||
http_parser:
|
http_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -468,21 +461,21 @@ packages:
|
||||||
name: intl
|
name: intl
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.16.1"
|
version: "0.17.0"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: io
|
name: io
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.5"
|
version: "1.0.0"
|
||||||
js:
|
js:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: js
|
name: js
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.3-nullsafety.2"
|
version: "0.6.3"
|
||||||
json_annotation:
|
json_annotation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -490,13 +483,6 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.1"
|
version: "3.1.1"
|
||||||
json_rpc_2:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: json_rpc_2
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.2"
|
|
||||||
latlong:
|
latlong:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -531,21 +517,21 @@ packages:
|
||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.10-nullsafety.1"
|
version: "0.12.10"
|
||||||
material_design_icons_flutter:
|
material_design_icons_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: material_design_icons_flutter
|
name: material_design_icons_flutter
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.5855"
|
version: "4.0.5955"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0-nullsafety.3"
|
version: "1.3.0"
|
||||||
mgrs_dart:
|
mgrs_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -559,7 +545,7 @@ packages:
|
||||||
name: mime
|
name: mime
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.7"
|
version: "1.0.0"
|
||||||
motion_sensors:
|
motion_sensors:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -573,21 +559,7 @@ packages:
|
||||||
name: nested
|
name: nested
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.4"
|
version: "1.0.0"
|
||||||
node_interop:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: node_interop
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.1"
|
|
||||||
node_io:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: node_io
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.1"
|
|
||||||
node_preamble:
|
node_preamble:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -601,7 +573,7 @@ packages:
|
||||||
name: overlay_support
|
name: overlay_support
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.5"
|
version: "1.2.0-nullsafety.0"
|
||||||
package_config:
|
package_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -615,7 +587,7 @@ packages:
|
||||||
name: package_info
|
name: package_info
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.3+4"
|
version: "2.0.0"
|
||||||
palette_generator:
|
palette_generator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -636,7 +608,7 @@ packages:
|
||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0-nullsafety.1"
|
version: "1.8.0"
|
||||||
path_drawing:
|
path_drawing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -657,21 +629,21 @@ packages:
|
||||||
name: path_provider_linux
|
name: path_provider_linux
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.1+2"
|
version: "2.0.0"
|
||||||
path_provider_platform_interface:
|
path_provider_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "2.0.0"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.4+3"
|
version: "2.0.0"
|
||||||
pdf:
|
pdf:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -685,7 +657,7 @@ packages:
|
||||||
name: pedantic
|
name: pedantic
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0-nullsafety.2"
|
version: "1.11.0"
|
||||||
percent_indicator:
|
percent_indicator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -720,7 +692,7 @@ packages:
|
||||||
name: platform
|
name: platform
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0-nullsafety.2"
|
version: "3.0.0"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -734,7 +706,7 @@ packages:
|
||||||
name: pool
|
name: pool
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.0-nullsafety.2"
|
version: "1.5.0"
|
||||||
positioned_tap_detector:
|
positioned_tap_detector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -755,7 +727,7 @@ packages:
|
||||||
name: process
|
name: process
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0-nullsafety.2"
|
version: "4.0.0"
|
||||||
proj4dart:
|
proj4dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -769,14 +741,14 @@ packages:
|
||||||
name: provider
|
name: provider
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.3.3"
|
version: "5.0.0"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pub_semver
|
name: pub_semver
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.4"
|
version: "2.0.0"
|
||||||
qr:
|
qr:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -797,42 +769,42 @@ packages:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.12+4"
|
version: "2.0.3"
|
||||||
shared_preferences_linux:
|
shared_preferences_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_linux
|
name: shared_preferences_linux
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.2+4"
|
version: "2.0.0"
|
||||||
shared_preferences_macos:
|
shared_preferences_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_macos
|
name: shared_preferences_macos
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.1+11"
|
version: "2.0.0"
|
||||||
shared_preferences_platform_interface:
|
shared_preferences_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_platform_interface
|
name: shared_preferences_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "2.0.0"
|
||||||
shared_preferences_web:
|
shared_preferences_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_web
|
name: shared_preferences_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.2+7"
|
version: "2.0.0"
|
||||||
shared_preferences_windows:
|
shared_preferences_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_windows
|
name: shared_preferences_windows
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.2+3"
|
version: "2.0.0"
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -872,56 +844,56 @@ packages:
|
||||||
name: source_map_stack_trace
|
name: source_map_stack_trace
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0-nullsafety.3"
|
version: "2.1.0"
|
||||||
source_maps:
|
source_maps:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_maps
|
name: source_maps
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.10.10-nullsafety.2"
|
version: "0.10.10"
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0-nullsafety.2"
|
version: "1.8.0"
|
||||||
sqflite:
|
sqflite:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.2+3"
|
version: "2.0.0+2"
|
||||||
sqflite_common:
|
sqflite_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3+1"
|
version: "2.0.0+1"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0-nullsafety.1"
|
version: "1.10.0"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0-nullsafety.1"
|
version: "2.1.0"
|
||||||
stream_transform:
|
stream_transform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_transform
|
name: stream_transform
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "2.0.0"
|
||||||
streams_channel:
|
streams_channel:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -935,7 +907,7 @@ packages:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0-nullsafety.1"
|
version: "1.1.0"
|
||||||
sync_http:
|
sync_http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -949,35 +921,35 @@ packages:
|
||||||
name: synchronized
|
name: synchronized
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0+2"
|
version: "3.0.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0-nullsafety.1"
|
version: "1.2.0"
|
||||||
test:
|
test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: test
|
name: test
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.16.0-nullsafety.5"
|
version: "1.16.5"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.19-nullsafety.2"
|
version: "0.2.19"
|
||||||
test_core:
|
test_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_core
|
name: test_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.12-nullsafety.5"
|
version: "0.3.15"
|
||||||
transparent_image:
|
transparent_image:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -998,7 +970,7 @@ packages:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0-nullsafety.3"
|
version: "1.3.0"
|
||||||
unicode:
|
unicode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1012,42 +984,42 @@ packages:
|
||||||
name: url_launcher
|
name: url_launcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.7.10"
|
version: "6.0.2"
|
||||||
url_launcher_linux:
|
url_launcher_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_linux
|
name: url_launcher_linux
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.1+4"
|
version: "2.0.0"
|
||||||
url_launcher_macos:
|
url_launcher_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_macos
|
name: url_launcher_macos
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.1+9"
|
version: "2.0.0"
|
||||||
url_launcher_platform_interface:
|
url_launcher_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_platform_interface
|
name: url_launcher_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.9"
|
version: "2.0.1"
|
||||||
url_launcher_web:
|
url_launcher_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_web
|
name: url_launcher_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.5+3"
|
version: "2.0.0"
|
||||||
url_launcher_windows:
|
url_launcher_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_windows
|
name: url_launcher_windows
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.1+3"
|
version: "2.0.0"
|
||||||
validate:
|
validate:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1061,7 +1033,7 @@ packages:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0-nullsafety.3"
|
version: "2.1.0"
|
||||||
version:
|
version:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1076,27 +1048,20 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.5.0"
|
version: "5.5.0"
|
||||||
vm_service_client:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: vm_service_client
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.2.6+2"
|
|
||||||
watcher:
|
watcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: watcher
|
name: watcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.7+15"
|
version: "1.0.0"
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.2.0"
|
||||||
webdriver:
|
webdriver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1117,7 +1082,7 @@ packages:
|
||||||
name: win32
|
name: win32
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.7.4+1"
|
version: "2.0.0"
|
||||||
wkt_parser:
|
wkt_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1131,7 +1096,7 @@ packages:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.2"
|
version: "0.2.0"
|
||||||
xml:
|
xml:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1145,7 +1110,7 @@ packages:
|
||||||
name: yaml
|
name: yaml
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "3.1.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.10.2 <2.11.0"
|
dart: ">=2.12.0 <3.0.0"
|
||||||
flutter: ">=1.22.2 <2.0.0"
|
flutter: ">=1.24.0-10.1.pre"
|
||||||
|
|
51
pubspec.yaml
51
pubspec.yaml
|
@ -4,18 +4,21 @@ repository: https://github.com/deckerst/aves
|
||||||
version: 1.3.5+41
|
version: 1.3.5+41
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: '>=2.10.0 <3.0.0'
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
charts_flutter: # not null safe, as of 2021/03/09 - https://github.com/google/charts/issues/579
|
# `charts_flutter` not null safe, as of 2021/03/09 - https://github.com/google/charts/issues/579
|
||||||
|
charts_flutter:
|
||||||
collection:
|
collection:
|
||||||
connectivity:
|
connectivity:
|
||||||
country_code: # not null safe, as of 2021/03/09 - unmaintained?
|
# `country_code` not null safe, as of 2021/03/09 - unmaintained?
|
||||||
decorated_icon: # not null safe, as of 2021/03/09 - https://github.com/benPesso/flutter_decorated_icon/issues/2
|
country_code:
|
||||||
|
# `decorated_icon` not null safe, as of 2021/03/09 - https://github.com/benPesso/flutter_decorated_icon/issues/2
|
||||||
|
decorated_icon:
|
||||||
event_bus:
|
event_bus:
|
||||||
# TODO TLAD merge null safe `expansion_tile_card` to fork
|
# TODO TLAD merge null safe `expansion_tile_card` to fork
|
||||||
expansion_tile_card:
|
expansion_tile_card:
|
||||||
|
@ -26,43 +29,63 @@ dependencies:
|
||||||
firebase_analytics:
|
firebase_analytics:
|
||||||
firebase_crashlytics:
|
firebase_crashlytics:
|
||||||
# TODO TLAD migrate to basic SnackBar or `another_flushbar`
|
# TODO TLAD migrate to basic SnackBar or `another_flushbar`
|
||||||
flushbar: # not null safe, as of 2021/03/09 - discontinued
|
# `flushbar` not null safe, as of 2021/03/09 - discontinued
|
||||||
|
flushbar:
|
||||||
flutter_highlight:
|
flutter_highlight:
|
||||||
flutter_ijkplayer: # not null safe, as of 2021/03/09 - unmaintained?
|
# `flutter_ijkplayer` not null safe, as of 2021/03/09 - unmaintained?
|
||||||
|
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_localized_locales:
|
flutter_localized_locales:
|
||||||
flutter_map: # not null safe, as of 2021/03/09 - https://github.com/fleaflet/flutter_map/issues/829
|
# `flutter_map` not null safe, as of 2021/03/09 - https://github.com/fleaflet/flutter_map/issues/829
|
||||||
|
flutter_map:
|
||||||
flutter_markdown:
|
flutter_markdown:
|
||||||
flutter_staggered_animations:
|
flutter_staggered_animations:
|
||||||
flutter_svg:
|
flutter_svg:
|
||||||
# TODO TLAD migrate to `geocoding` (or reimplement) - https://github.com/Baseflow/flutter-geocoding/issues/37
|
# TODO TLAD migrate to `geocoding` (or reimplement) - https://github.com/Baseflow/flutter-geocoding/issues/37
|
||||||
geocoder: # not null safe, as of 2021/03/09 - unmaintained? - https://github.com/aloisdeniel/flutter_geocoder/issues/61
|
# `geocoder` not null safe, as of 2021/03/09 - unmaintained? - https://github.com/aloisdeniel/flutter_geocoder/issues/61
|
||||||
|
geocoder:
|
||||||
github:
|
github:
|
||||||
google_api_availability:
|
google_api_availability:
|
||||||
google_maps_flutter:
|
google_maps_flutter:
|
||||||
intl:
|
intl:
|
||||||
latlong: # not null safe, as of 2021/03/09 - archived - migrate to maps_toolkit? cf https://github.com/fleaflet/flutter_map/pull/750
|
# `latlong` not null safe, as of 2021/03/09 - archived - migrate to maps_toolkit? cf https://github.com/fleaflet/flutter_map/pull/750
|
||||||
|
latlong:
|
||||||
material_design_icons_flutter:
|
material_design_icons_flutter:
|
||||||
overlay_support:
|
# as of 2021/03/09, stable version 1.0.5 uses deprecated `ancestorWidgetOfExactType`
|
||||||
|
overlay_support: 1.2.0-nullsafety.0
|
||||||
package_info:
|
package_info:
|
||||||
palette_generator: # not null safe, as of 2021/03/09 - https://github.com/flutter/packages/pull/287
|
# `palette_generator` not null safe, as of 2021/03/09 - https://github.com/flutter/packages/pull/287
|
||||||
panorama: # not null safe, as of 2021/03/09 - no issue/PR
|
palette_generator:
|
||||||
|
# `panorama` not null safe, as of 2021/03/09 - no issue/PR
|
||||||
|
panorama:
|
||||||
pdf:
|
pdf:
|
||||||
pedantic:
|
pedantic:
|
||||||
percent_indicator:
|
percent_indicator:
|
||||||
permission_handler:
|
permission_handler:
|
||||||
printing:
|
# TODO TLAD upgrade printing to >=5 when `flutter_driver` dependency upgrade get on the right channel
|
||||||
|
# https://github.com/flutter/flutter/pull/75370
|
||||||
|
# https://github.com/flutter/flutter/blob/master/packages/flutter_driver/pubspec.yaml
|
||||||
|
# otherwise, we get this conundrum:
|
||||||
|
# every version of flutter_driver from sdk depends on crypto 2.1.5
|
||||||
|
# pdf >=3.0.1 depends on crypto ^3.0.0
|
||||||
|
# printing >=5.0.1 depends on pdf ^3.0.1
|
||||||
|
printing: 4.1.0
|
||||||
provider:
|
provider:
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
sqflite:
|
sqflite:
|
||||||
streams_channel: # not null safe, as of 2021/03/09 - unmaintained? - no issue/PR
|
# `streams_channel` not null safe, as of 2021/03/09 - unmaintained? - no issue/PR
|
||||||
|
streams_channel:
|
||||||
tuple:
|
tuple:
|
||||||
url_launcher:
|
url_launcher:
|
||||||
version:
|
version:
|
||||||
xml:
|
xml:
|
||||||
|
|
||||||
|
dependency_overrides:
|
||||||
|
# because of `charts_flutter`
|
||||||
|
intl: '>=0.17.0'
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
File diff suppressed because one or more lines are too long
1
shaders_2.0.1.sksl.json
Normal file
1
shaders_2.0.1.sksl.json
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,5 @@
|
||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:aves/main.dart' as app;
|
import 'package:aves/main.dart' as app;
|
||||||
import 'package:aves/model/settings/enums.dart';
|
import 'package:aves/model/settings/enums.dart';
|
||||||
import 'package:aves/model/settings/settings.dart';
|
import 'package:aves/model/settings/settings.dart';
|
||||||
|
@ -22,6 +24,7 @@ Future<void> configureAndLaunch() async {
|
||||||
await settings.init();
|
await settings.init();
|
||||||
settings.keepScreenOn = KeepScreenOn.always;
|
settings.keepScreenOn = KeepScreenOn.always;
|
||||||
settings.hasAcceptedTerms = false;
|
settings.hasAcceptedTerms = false;
|
||||||
|
settings.locale = Locale('en');
|
||||||
|
|
||||||
app.main();
|
app.main();
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,8 @@ void agreeToTerms() {
|
||||||
await driver.tap(find.byValueKey('continue-button'));
|
await driver.tap(find.byValueKey('continue-button'));
|
||||||
await driver.waitUntilNoTransientCallbacks();
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
|
|
||||||
expect(await driver.getText(find.byValueKey('appbar-title')), 'Collection');
|
// wait for collection loading
|
||||||
|
await driver.waitForCondition(NoPendingPlatformMessages());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,6 +72,7 @@ void visitAbout() {
|
||||||
await driver.waitUntilNoTransientCallbacks();
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
|
|
||||||
await pressDeviceBackButton();
|
await pressDeviceBackButton();
|
||||||
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,6 +85,7 @@ void visitSettings() {
|
||||||
await driver.waitUntilNoTransientCallbacks();
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
|
|
||||||
await pressDeviceBackButton();
|
await pressDeviceBackButton();
|
||||||
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +98,7 @@ void sortCollection() {
|
||||||
await driver.waitUntilNoTransientCallbacks();
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
|
|
||||||
await driver.tap(find.byValueKey(EntrySortFactor.date.toString()));
|
await driver.tap(find.byValueKey(EntrySortFactor.date.toString()));
|
||||||
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,6 +111,7 @@ void groupCollection() {
|
||||||
await driver.waitUntilNoTransientCallbacks();
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
|
|
||||||
await driver.tap(find.byValueKey(EntryGroupFactor.album.toString()));
|
await driver.tap(find.byValueKey(EntryGroupFactor.album.toString()));
|
||||||
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,13 +140,15 @@ void searchAlbum() {
|
||||||
await driver.tap(find.byValueKey('search-button'));
|
await driver.tap(find.byValueKey('search-button'));
|
||||||
await driver.waitUntilNoTransientCallbacks();
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
|
|
||||||
final album = path.split(targetPicturesDir).last;
|
final albumPath = targetPicturesDirEmulated;
|
||||||
|
final albumUniqueName = path.split(albumPath).last;
|
||||||
await driver.tap(find.byType('TextField'));
|
await driver.tap(find.byType('TextField'));
|
||||||
await driver.enterText(album);
|
await driver.enterText(albumUniqueName);
|
||||||
|
|
||||||
final albumChip = find.byValueKey('album-$album');
|
final albumChip = find.byValueKey('album-$albumPath');
|
||||||
await driver.waitFor(albumChip);
|
await driver.waitFor(albumChip);
|
||||||
await driver.tap(albumChip);
|
await driver.tap(albumChip);
|
||||||
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,6 +217,7 @@ void showInfoMetadata() {
|
||||||
|
|
||||||
print('* back to image');
|
print('* back to image');
|
||||||
await driver.tap(find.byValueKey('back-button'));
|
await driver.tap(find.byValueKey('back-button'));
|
||||||
|
await driver.waitUntilNoTransientCallbacks();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
const sourcePicturesDir = 'test_driver/assets/';
|
const sourcePicturesDir = 'test_driver/assets/';
|
||||||
const targetPicturesDir = '/sdcard/Pictures/Aves Test Driver/';
|
const targetPicturesDir = '/sdcard/Pictures/Aves Test Driver/';
|
||||||
|
const targetPicturesDirEmulated = '/storage/emulated/0/Pictures/Aves Test Driver';
|
|
@ -19,7 +19,7 @@ String get adb {
|
||||||
const List<String> adbDeviceParam = []; // '[]', '[-d]', '[-e]', or '[-s, <serial_number>]'
|
const List<String> adbDeviceParam = []; // '[]', '[-d]', '[-e]', or '[-s, <serial_number>]'
|
||||||
|
|
||||||
Future<void> runAdb(List<String> args) async {
|
Future<void> runAdb(List<String> args) async {
|
||||||
await Process.runSync(adb, [...adbDeviceParam, ...args]);
|
await Process.run(adb, [...adbDeviceParam, ...args]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> createDirectory(String dir) async {
|
Future<void> createDirectory(String dir) async {
|
||||||
|
|
Loading…
Reference in a new issue