minor fix

This commit is contained in:
Thibault Deckers 2021-11-26 14:27:52 +09:00
parent 727635ef68
commit b837c0a5b6
6 changed files with 23 additions and 3 deletions

View file

@ -4,6 +4,13 @@ import 'package:aves/utils/change_notifier.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
class Query extends ChangeNotifier { class Query extends ChangeNotifier {
Query({required String? initialValue}) {
if (initialValue != null && initialValue.isNotEmpty) {
_enabled = true;
queryNotifier.value = initialValue;
}
}
bool _enabled = false; bool _enabled = false;
bool get enabled => _enabled; bool get enabled => _enabled;

View file

@ -1,11 +1,13 @@
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
// names should match possible values on platform // names should match possible values on platform
enum NameConflictStrategy { rename, replace, skip } enum NameConflictStrategy { rename, replace, skip }
extension ExtraNameConflictStrategy on NameConflictStrategy { extension ExtraNameConflictStrategy on NameConflictStrategy {
String toPlatform() => toString().substring('NameConflictStrategy.'.length); // TODO TLAD [dart 2.15] replace `describeEnum()` by `enum.name`
String toPlatform() => describeEnum(this);
String getName(BuildContext context) { String getName(BuildContext context) {
switch (this) { switch (this) {

View file

@ -296,7 +296,8 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
} }
// key is expected by test driver (e.g. 'menu-sort', 'menu-group', 'menu-map') // key is expected by test driver (e.g. 'menu-sort', 'menu-group', 'menu-map')
Key _getActionKey(EntrySetAction action) => Key('menu-${action.toString().substring('EntrySetAction.'.length)}'); // TODO TLAD [dart 2.15] replace `describeEnum()` by `enum.name`
Key _getActionKey(EntrySetAction action) => Key('menu-${describeEnum(action)}');
Widget _toActionButton(EntrySetAction action, {required bool enabled}) { Widget _toActionButton(EntrySetAction action, {required bool enabled}) {
final onPressed = enabled ? () => _onActionSelected(action) : null; final onPressed = enabled ? () => _onActionSelected(action) : null;

View file

@ -1,4 +1,5 @@
import 'package:aves/model/entry.dart'; import 'package:aves/model/entry.dart';
import 'package:aves/model/filters/query.dart';
import 'package:aves/model/selection.dart'; import 'package:aves/model/selection.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/widgets/collection/collection_grid.dart'; import 'package:aves/widgets/collection/collection_grid.dart';
@ -8,6 +9,7 @@ import 'package:aves/widgets/common/providers/media_query_data_provider.dart';
import 'package:aves/widgets/common/providers/query_provider.dart'; import 'package:aves/widgets/common/providers/query_provider.dart';
import 'package:aves/widgets/common/providers/selection_provider.dart'; import 'package:aves/widgets/common/providers/selection_provider.dart';
import 'package:aves/widgets/drawer/app_drawer.dart'; import 'package:aves/widgets/drawer/app_drawer.dart';
import 'package:collection/collection.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -37,10 +39,12 @@ class _CollectionPageState extends State<CollectionPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final liveFilter = collection.filters.firstWhereOrNull((v) => v is QueryFilter && v.live) as QueryFilter?;
return MediaQueryDataProvider( return MediaQueryDataProvider(
child: Scaffold( child: Scaffold(
body: SelectionProvider<AvesEntry>( body: SelectionProvider<AvesEntry>(
child: QueryProvider( child: QueryProvider(
initialQuery: liveFilter?.query,
child: Builder( child: Builder(
builder: (context) => WillPopScope( builder: (context) => WillPopScope(
onWillPop: () { onWillPop: () {

View file

@ -3,17 +3,19 @@ import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class QueryProvider extends StatelessWidget { class QueryProvider extends StatelessWidget {
final String? initialQuery;
final Widget child; final Widget child;
const QueryProvider({ const QueryProvider({
Key? key, Key? key,
required this.initialQuery,
required this.child, required this.child,
}) : super(key: key); }) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ChangeNotifierProvider<Query>( return ChangeNotifierProvider<Query>(
create: (context) => Query(), create: (context) => Query(initialValue: initialQuery),
child: child, child: child,
); );
} }

View file

@ -1,5 +1,6 @@
import 'package:aves/app_mode.dart'; import 'package:aves/app_mode.dart';
import 'package:aves/model/entry.dart'; import 'package:aves/model/entry.dart';
import 'package:aves/model/filters/query.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/widgets/collection/collection_grid.dart'; import 'package:aves/widgets/collection/collection_grid.dart';
import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/collection/collection_page.dart';
@ -9,6 +10,7 @@ import 'package:aves/widgets/common/providers/query_provider.dart';
import 'package:aves/widgets/common/providers/selection_provider.dart'; import 'package:aves/widgets/common/providers/selection_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:collection/collection.dart';
class ItemPickDialog extends StatefulWidget { class ItemPickDialog extends StatefulWidget {
static const routeName = '/item_pick'; static const routeName = '/item_pick';
@ -35,12 +37,14 @@ class _ItemPickDialogState extends State<ItemPickDialog> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final liveFilter = collection.filters.firstWhereOrNull((v) => v is QueryFilter && v.live) as QueryFilter?;
return ListenableProvider<ValueNotifier<AppMode>>.value( return ListenableProvider<ValueNotifier<AppMode>>.value(
value: ValueNotifier(AppMode.pickInternal), value: ValueNotifier(AppMode.pickInternal),
child: MediaQueryDataProvider( child: MediaQueryDataProvider(
child: Scaffold( child: Scaffold(
body: SelectionProvider<AvesEntry>( body: SelectionProvider<AvesEntry>(
child: QueryProvider( child: QueryProvider(
initialQuery: liveFilter?.query,
child: GestureAreaProtectorStack( child: GestureAreaProtectorStack(
child: SafeArea( child: SafeArea(
bottom: false, bottom: false,