minor fixes

This commit is contained in:
Thibault Deckers 2021-11-29 15:38:19 +09:00
parent 35958d87fd
commit a636c444e1
10 changed files with 26 additions and 7 deletions

View file

@ -56,7 +56,7 @@ android {
// minSdkVersion constraints:
// - Flutter & other plugins: 16
// - google_maps_flutter v2.1.1: 20
minSdkVersion 16
minSdkVersion 19
targetSdkVersion 31
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName

View file

@ -26,7 +26,7 @@ class DeviceHandler(private val context: Context) : MethodCallHandler {
"canGrantDirectoryAccess" to (sdkInt >= Build.VERSION_CODES.LOLLIPOP),
"canPinShortcut" to ShortcutManagerCompat.isRequestPinShortcutSupported(context),
"canPrint" to (sdkInt >= Build.VERSION_CODES.KITKAT),
"canRenderEmojis" to (sdkInt >= Build.VERSION_CODES.LOLLIPOP),
"canRenderFlagEmojis" to (sdkInt >= Build.VERSION_CODES.LOLLIPOP),
// as of google_maps_flutter v2.1.1, minSDK is 20 because of default PlatformView usage,
// but using hybrid composition would make it usable on API 19 too,
// cf https://github.com/flutter/flutter/issues/23728

View file

@ -5,7 +5,7 @@ final Device device = Device._private();
class Device {
late final String _userAgent;
late final bool _canGrantDirectoryAccess, _canPinShortcut, _canPrint, _canRenderEmojis, _canRenderGoogleMaps;
late final bool _canGrantDirectoryAccess, _canPinShortcut, _canPrint, _canRenderFlagEmojis, _canRenderGoogleMaps;
late final bool _hasFilePicker, _showPinShortcutFeedback;
String get userAgent => _userAgent;
@ -16,7 +16,7 @@ class Device {
bool get canPrint => _canPrint;
bool get canRenderEmojis => _canRenderEmojis;
bool get canRenderFlagEmojis => _canRenderFlagEmojis;
bool get canRenderGoogleMaps => _canRenderGoogleMaps;
@ -35,7 +35,7 @@ class Device {
_canGrantDirectoryAccess = capabilities['canGrantDirectoryAccess'] ?? false;
_canPinShortcut = capabilities['canPinShortcut'] ?? false;
_canPrint = capabilities['canPrint'] ?? false;
_canRenderEmojis = capabilities['canRenderEmojis'] ?? false;
_canRenderFlagEmojis = capabilities['canRenderFlagEmojis'] ?? false;
_canRenderGoogleMaps = capabilities['canRenderGoogleMaps'] ?? false;
_hasFilePicker = capabilities['hasFilePicker'] ?? false;
_showPinShortcutFeedback = capabilities['showPinShortcutFeedback'] ?? false;

View file

@ -59,7 +59,7 @@ class LocationFilter extends CollectionFilter {
@override
Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true, bool embossed = false}) {
if (_countryCode != null && device.canRenderEmojis) {
if (_countryCode != null && device.canRenderFlagEmojis) {
final flag = countryCodeToFlag(_countryCode);
// as of Flutter v1.22.3, emoji shadows are rendered as colorful duplicates,
// not filled with the shadow color as expected, so we remove them

View file

@ -18,7 +18,7 @@ import 'package:provider/provider.dart';
typedef FilterCallback = void Function(CollectionFilter filter);
typedef OffsetFilterCallback = void Function(BuildContext context, CollectionFilter filter, Offset tapPosition);
enum HeroType { always, onTap }
enum HeroType { always, onTap, never }
@immutable
class AvesFilterDecoration {

View file

@ -4,6 +4,7 @@ import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart';
import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_filter_chip.dart';
import 'package:aves/widgets/common/providers/media_query_data_provider.dart';
import 'package:aves/widgets/dialogs/aves_dialog.dart';
import 'package:aves/widgets/dialogs/item_pick_dialog.dart';
@ -96,6 +97,7 @@ class _CoverSelectionDialogState extends State<CoverSelectionDialog> {
extent: extent,
coverEntry: _isCustom ? _customEntry : _recentEntry,
onTap: (filter) => _pickEntry(),
heroType: HeroType.never,
),
),
],

View file

@ -12,6 +12,7 @@ import 'package:aves/widgets/common/app_bar_subtitle.dart';
import 'package:aves/widgets/common/basic/menu.dart';
import 'package:aves/widgets/common/basic/query_bar.dart';
import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_filter_chip.dart';
import 'package:aves/widgets/common/identity/empty.dart';
import 'package:aves/widgets/common/providers/selection_provider.dart';
import 'package:aves/widgets/dialogs/filter_editors/create_album_dialog.dart';
@ -79,6 +80,7 @@ class _AlbumPickPageState extends State<AlbumPickPage> {
text: context.l10n.albumEmpty,
),
onTap: (filter) => Navigator.pop<String>(context, (filter as AlbumFilter).album),
heroType: HeroType.never,
),
);
},

View file

@ -28,6 +28,7 @@ class CoveredFilterChip<T extends CollectionFilter> extends StatelessWidget {
final bool pinned;
final String? banner;
final FilterCallback? onTap;
final HeroType heroType;
const CoveredFilterChip({
Key? key,
@ -38,6 +39,7 @@ class CoveredFilterChip<T extends CollectionFilter> extends StatelessWidget {
this.pinned = false,
this.banner,
this.onTap,
this.heroType = HeroType.onTap,
}) : thumbnailExtent = thumbnailExtent ?? extent,
super(key: key);
@ -138,6 +140,7 @@ class CoveredFilterChip<T extends CollectionFilter> extends StatelessWidget {
banner: banner,
details: _buildDetails(source, filter),
padding: titlePadding,
heroType: heroType,
onTap: onTap,
onLongPress: null,
);

View file

@ -51,6 +51,7 @@ class FilterGridPage<T extends CollectionFilter> extends StatelessWidget {
final QueryTest<T>? applyQuery;
final Widget Function() emptyBuilder;
final FilterCallback onTap;
final HeroType heroType;
const FilterGridPage({
Key? key,
@ -66,6 +67,7 @@ class FilterGridPage<T extends CollectionFilter> extends StatelessWidget {
this.applyQuery,
required this.emptyBuilder,
required this.onTap,
required this.heroType,
}) : super(key: key);
static const Color detailColor = Color(0xFFE0E0E0);
@ -104,6 +106,7 @@ class FilterGridPage<T extends CollectionFilter> extends StatelessWidget {
applyQuery: applyQuery,
emptyBuilder: emptyBuilder,
onTap: onTap,
heroType: heroType,
),
),
),
@ -129,6 +132,7 @@ class FilterGrid<T extends CollectionFilter> extends StatefulWidget {
final QueryTest<T>? applyQuery;
final Widget Function() emptyBuilder;
final FilterCallback onTap;
final HeroType heroType;
const FilterGrid({
Key? key,
@ -144,6 +148,7 @@ class FilterGrid<T extends CollectionFilter> extends StatefulWidget {
required this.applyQuery,
required this.emptyBuilder,
required this.onTap,
required this.heroType,
}) : super(key: key);
@override
@ -181,6 +186,7 @@ class _FilterGridState<T extends CollectionFilter> extends State<FilterGrid<T>>
applyQuery: widget.applyQuery,
emptyBuilder: widget.emptyBuilder,
onTap: widget.onTap,
heroType: widget.heroType,
),
);
}
@ -196,6 +202,7 @@ class _FilterGridContent<T extends CollectionFilter> extends StatelessWidget {
final Widget Function() emptyBuilder;
final QueryTest<T>? applyQuery;
final FilterCallback onTap;
final HeroType heroType;
final ValueNotifier<double> _appBarHeightNotifier = ValueNotifier(0);
@ -212,6 +219,7 @@ class _FilterGridContent<T extends CollectionFilter> extends StatelessWidget {
required this.applyQuery,
required this.emptyBuilder,
required this.onTap,
required this.heroType,
}) : super(key: key) {
_appBarHeightNotifier.value = appBarHeight;
}
@ -275,6 +283,7 @@ class _FilterGridContent<T extends CollectionFilter> extends StatelessWidget {
pinned: pinnedFilters.contains(filter),
banner: newFilters.contains(filter) ? context.l10n.newFilterBanner : null,
onTap: onTap,
heroType: heroType,
),
),
);
@ -432,6 +441,7 @@ class _FilterScaler<T extends CollectionFilter> extends StatelessWidget {
extent: tileSize.width,
thumbnailExtent: context.read<TileExtentController>().effectiveExtentMax,
pinned: pinnedFilters.contains(filter),
heroType: HeroType.never,
);
},
highlightItem: (item) => item.filter,

View file

@ -3,6 +3,7 @@ import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart';
import 'package:aves/model/source/enums.dart';
import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/identity/aves_filter_chip.dart';
import 'package:aves/widgets/common/providers/selection_provider.dart';
import 'package:aves/widgets/filter_grids/common/action_delegates/chip_set.dart';
import 'package:aves/widgets/filter_grids/common/app_bar.dart';
@ -57,6 +58,7 @@ class FilterNavigationPage<T extends CollectionFilter> extends StatelessWidget {
},
),
onTap: (filter) => _goToCollection(context, filter),
heroType: HeroType.onTap,
),
),
);