| // 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'; |
| |
| class Scrim extends StatelessWidget { |
| const Scrim({this.controller}); |
| |
| final AnimationController controller; |
| |
| @override |
| Widget build(BuildContext context) { |
| final Size deviceSize = MediaQuery.of(context).size; |
| return ExcludeSemantics( |
| child: AnimatedBuilder( |
| animation: controller, |
| builder: (context, child) { |
| final Color color = |
| Color(0xFFF0EA).withOpacity(controller.value * 0.87); |
| |
| final Widget scrimRectangle = Container( |
| width: deviceSize.width, height: deviceSize.height, color: color); |
| |
| final bool ignorePointer = |
| (controller.status == AnimationStatus.dismissed); |
| final bool tapToRevert = |
| (controller.status == AnimationStatus.completed); |
| |
| if (tapToRevert) { |
| return GestureDetector( |
| onTap: () { |
| controller.reverse(); |
| }, |
| child: scrimRectangle, |
| ); |
| } else if (ignorePointer) { |
| return IgnorePointer(child: scrimRectangle); |
| } else { |
| return scrimRectangle; |
| } |
| }, |
| ), |
| ); |
| } |
| } |