albums/countries/tags: added fast scroll
This commit is contained in:
parent
42287f5f9c
commit
a411a8b578
1 changed files with 86 additions and 57 deletions
|
@ -15,6 +15,7 @@ import 'package:aves/widgets/common/data_providers/media_query_data_provider.dar
|
||||||
import 'package:aves/widgets/common/double_back_pop.dart';
|
import 'package:aves/widgets/common/double_back_pop.dart';
|
||||||
import 'package:aves/widgets/common/icons.dart';
|
import 'package:aves/widgets/common/icons.dart';
|
||||||
import 'package:aves/widgets/common/menu_row.dart';
|
import 'package:aves/widgets/common/menu_row.dart';
|
||||||
|
import 'package:aves/widgets/common/scroll_thumb.dart';
|
||||||
import 'package:aves/widgets/common/search_button.dart';
|
import 'package:aves/widgets/common/search_button.dart';
|
||||||
import 'package:aves/widgets/drawer/app_drawer.dart';
|
import 'package:aves/widgets/drawer/app_drawer.dart';
|
||||||
import 'package:aves/widgets/filter_grids/common/chip_action_delegate.dart';
|
import 'package:aves/widgets/filter_grids/common/chip_action_delegate.dart';
|
||||||
|
@ -22,6 +23,7 @@ import 'package:aves/widgets/filter_grids/common/chip_actions.dart';
|
||||||
import 'package:aves/widgets/filter_grids/common/chip_set_action_delegate.dart';
|
import 'package:aves/widgets/filter_grids/common/chip_set_action_delegate.dart';
|
||||||
import 'package:aves/widgets/filter_grids/common/decorated_filter_chip.dart';
|
import 'package:aves/widgets/filter_grids/common/decorated_filter_chip.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
|
import 'package:draggable_scrollbar/draggable_scrollbar.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
||||||
import 'package:pedantic/pedantic.dart';
|
import 'package:pedantic/pedantic.dart';
|
||||||
|
@ -168,7 +170,6 @@ class FilterGridPage extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final pinnedFilters = settings.pinnedFilters;
|
|
||||||
return MediaQueryDataProvider(
|
return MediaQueryDataProvider(
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
body: DoubleBackPopScope(
|
body: DoubleBackPopScope(
|
||||||
|
@ -177,8 +178,47 @@ class FilterGridPage extends StatelessWidget {
|
||||||
selector: (c, mq) => mq.size.width,
|
selector: (c, mq) => mq.size.width,
|
||||||
builder: (c, mqWidth, child) {
|
builder: (c, mqWidth, child) {
|
||||||
final columnCount = (mqWidth / maxCrossAxisExtent).ceil();
|
final columnCount = (mqWidth / maxCrossAxisExtent).ceil();
|
||||||
|
final scrollView = _buildScrollView(context, columnCount);
|
||||||
return AnimationLimiter(
|
return AnimationLimiter(
|
||||||
child: CustomScrollView(
|
child: _buildDraggableScrollView(scrollView),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
drawer: AppDrawer(
|
||||||
|
source: source,
|
||||||
|
),
|
||||||
|
resizeToAvoidBottomInset: false,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildDraggableScrollView(ScrollView scrollView) {
|
||||||
|
return Selector<MediaQueryData, double>(
|
||||||
|
selector: (context, mq) => mq.viewInsets.bottom,
|
||||||
|
builder: (context, mqViewInsetsBottom, child) => DraggableScrollbar(
|
||||||
|
heightScrollThumb: avesScrollThumbHeight,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
scrollThumbBuilder: avesScrollThumbBuilder(
|
||||||
|
height: avesScrollThumbHeight,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
),
|
||||||
|
controller: PrimaryScrollController.of(context),
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
// padding to keep scroll thumb between app bar above and nav bar below
|
||||||
|
top: kToolbarHeight,
|
||||||
|
bottom: mqViewInsetsBottom,
|
||||||
|
),
|
||||||
|
child: scrollView,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ScrollView _buildScrollView(BuildContext context, int columnCount) {
|
||||||
|
final pinnedFilters = settings.pinnedFilters;
|
||||||
|
return CustomScrollView(
|
||||||
|
controller: PrimaryScrollController.of(context),
|
||||||
slivers: [
|
slivers: [
|
||||||
appBar,
|
appBar,
|
||||||
filterKeys.isEmpty
|
filterKeys.isEmpty
|
||||||
|
@ -233,17 +273,6 @@ class FilterGridPage extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
drawer: AppDrawer(
|
|
||||||
source: source,
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue