forked from flutter/samples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpage_status.dart
More file actions
52 lines (41 loc) · 1.55 KB
/
page_status.dart
File metadata and controls
52 lines (41 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright 2019 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:gallery/layout/adaptive.dart';
class PageStatus extends InheritedWidget {
const PageStatus({
Key key,
@required this.cartController,
@required this.menuController,
@required Widget child,
}) : assert(cartController != null),
assert(menuController != null),
super(key: key, child: child);
final AnimationController cartController;
final AnimationController menuController;
static PageStatus of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<PageStatus>();
}
@override
bool updateShouldNotify(PageStatus old) =>
old.cartController != cartController ||
old.menuController != menuController;
}
bool productPageIsVisible(BuildContext context) {
return _cartControllerOf(context).isDismissed &&
(_menuControllerOf(context).isCompleted || isDisplayDesktop(context));
}
bool menuPageIsVisible(BuildContext context) {
return _cartControllerOf(context).isDismissed &&
(_menuControllerOf(context).isDismissed || isDisplayDesktop(context));
}
bool cartPageIsVisible(BuildContext context) {
return _cartControllerOf(context).isCompleted;
}
AnimationController _cartControllerOf(BuildContext context) {
return PageStatus.of(context).cartController;
}
AnimationController _menuControllerOf(BuildContext context) {
return PageStatus.of(context).menuController;
}