Back button to quit selection mode on android

This commit is contained in:
Ming Ming 2021-08-23 04:39:19 +08:00
parent cb5238d388
commit a68c7cdd8b

View file

@ -55,8 +55,9 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
double mainAxisSpacing = 0,
ValueChanged<double?>? onMaxExtentChanged,
}) {
final Widget content;
if (onMaxExtentChanged != null) {
return MeasurableItemList(
content = MeasurableItemList(
key: _listKey,
maxCrossAxisExtent: maxCrossAxisExtent,
itemCount: _items.length,
@ -66,7 +67,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
onMaxExtentChanged: onMaxExtentChanged,
);
} else {
return SliverStaggeredGrid.extentBuilder(
content = SliverStaggeredGrid.extentBuilder(
maxCrossAxisExtent: maxCrossAxisExtent,
itemCount: _items.length,
itemBuilder: _buildItem,
@ -74,6 +75,14 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
mainAxisSpacing: mainAxisSpacing,
);
}
if (platform_k.isAndroid) {
return WillPopScope(
onWillPop: _onBackButton,
child: content,
);
} else {
return content;
}
}
@protected
@ -202,6 +211,17 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
}
}
Future<bool> _onBackButton() async {
if (!isSelectionMode) {
return true;
} else {
setState(() {
clearSelectedItems();
});
return false;
}
}
/// Map selected items to the new item list
void _transformSelectedItems() {
// TODO too slow!