mirror of
https://github.com/flutter/samples.git
synced 2025-11-09 14:28:51 +00:00
[Gallery] Close Shrine cart on back button press for android (#288)
* Close Shrine cart on back button press for android
This commit is contained in:
@@ -78,6 +78,18 @@ class _ShrineAppState extends State<ShrineApp> with TickerProviderStateMixin {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Closes the bottom sheet if it is open.
|
||||||
|
Future<bool> _onWillPop() async {
|
||||||
|
final status = _expandingController.status;
|
||||||
|
if (status == AnimationStatus.completed ||
|
||||||
|
status == AnimationStatus.forward) {
|
||||||
|
_expandingController.reverse();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final bool isDesktop = isDisplayDesktop(context);
|
final bool isDesktop = isDisplayDesktop(context);
|
||||||
@@ -86,6 +98,8 @@ class _ShrineAppState extends State<ShrineApp> with TickerProviderStateMixin {
|
|||||||
|
|
||||||
return ScopedModel<AppStateModel>(
|
return ScopedModel<AppStateModel>(
|
||||||
model: _model,
|
model: _model,
|
||||||
|
child: WillPopScope(
|
||||||
|
onWillPop: _onWillPop,
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
navigatorKey: widget.navigatorKey,
|
navigatorKey: widget.navigatorKey,
|
||||||
title: 'Shrine',
|
title: 'Shrine',
|
||||||
@@ -115,6 +129,7 @@ class _ShrineAppState extends State<ShrineApp> with TickerProviderStateMixin {
|
|||||||
supportedLocales: GalleryLocalizations.supportedLocales,
|
supportedLocales: GalleryLocalizations.supportedLocales,
|
||||||
locale: GalleryOptions.of(context).locale,
|
locale: GalleryOptions.of(context).locale,
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,9 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
import 'dart:async';
|
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:meta/meta.dart';
|
import 'package:meta/meta.dart';
|
||||||
import 'package:scoped_model/scoped_model.dart';
|
import 'package:scoped_model/scoped_model.dart';
|
||||||
|
|
||||||
@@ -51,11 +49,11 @@ double _paddedThumbnailHeight(BuildContext context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ExpandingBottomSheet extends StatefulWidget {
|
class ExpandingBottomSheet extends StatefulWidget {
|
||||||
const ExpandingBottomSheet(
|
const ExpandingBottomSheet({
|
||||||
{Key key,
|
Key key,
|
||||||
@required this.hideController,
|
@required this.hideController,
|
||||||
@required this.expandingController})
|
@required this.expandingController,
|
||||||
: assert(hideController != null),
|
}) : assert(hideController != null),
|
||||||
assert(expandingController != null),
|
assert(expandingController != null),
|
||||||
super(key: key);
|
super(key: key);
|
||||||
|
|
||||||
@@ -551,18 +549,6 @@ class _ExpandingBottomSheetState extends State<ExpandingBottomSheet>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Closes the cart if the cart is open, otherwise exits the app (this should
|
|
||||||
// only be relevant for Android).
|
|
||||||
Future<bool> _onWillPop() async {
|
|
||||||
if (!_isOpen) {
|
|
||||||
await SystemNavigator.pop();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AnimatedSize(
|
return AnimatedSize(
|
||||||
@@ -571,8 +557,6 @@ class _ExpandingBottomSheetState extends State<ExpandingBottomSheet>
|
|||||||
curve: Curves.easeInOut,
|
curve: Curves.easeInOut,
|
||||||
vsync: this,
|
vsync: this,
|
||||||
alignment: AlignmentDirectional.topStart,
|
alignment: AlignmentDirectional.topStart,
|
||||||
child: WillPopScope(
|
|
||||||
onWillPop: _onWillPop,
|
|
||||||
child: AnimatedBuilder(
|
child: AnimatedBuilder(
|
||||||
animation: widget.hideController,
|
animation: widget.hideController,
|
||||||
builder: (context, child) => AnimatedBuilder(
|
builder: (context, child) => AnimatedBuilder(
|
||||||
@@ -583,7 +567,6 @@ class _ExpandingBottomSheetState extends State<ExpandingBottomSheet>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user