zoukankan      html  css  js  c++  java
  • Transparent PageRoute in Flutter for displaying a (semi-) transparent page

    import 'package:flutter/widgets.dart';
    
    class TransparentRoute extends PageRoute<void> {
      TransparentRoute({
        @required this.builder,
        RouteSettings settings,
      })  : assert(builder != null),
            super(settings: settings, fullscreenDialog: false);
    
      final WidgetBuilder builder;
    
      @override
      bool get opaque => false;
    
      @override
      Color get barrierColor => null;
    
      @override
      String get barrierLabel => null;
    
      @override
      bool get maintainState => true;
    
      @override
      Duration get transitionDuration => Duration(milliseconds: 350);
    
      @override
      Widget buildPage(BuildContext context, Animation<double> animation,
          Animation<double> secondaryAnimation) {
        final result = builder(context);
        return FadeTransition(
          opacity: Tween<double>(begin: 0, end: 1).animate(animation),
          child: Semantics(
            scopesRoute: true,
            explicitChildNodes: true,
            child: result,
          ),
        );
      }
    }
    

      

    Keep in mind that this would also create a custom transition animation and behave differently than the more complex MaterialPageRoute (e.g. the swipe-back gesture would not work with the current implementation on iOS).

    You could use it like this:

    Navigator.of(context).push(
        TransparentRoute(builder: (BuildContext context) => YourSecondPage())
    );
    

      

    For more info on the PageRoute and the different implementers, head over to https://docs.flutter.io/flutter/widgets/PageRoute-class.html

  • 相关阅读:
    Java三大主流框架概述
    ASP.NET的内置对象
    9月29
    第一章
    在java开发中,为什么要使用单例模式。。?
    《设计模式之禅》一书学习心得(连载中)
    网上的一些java算法题的个人练习笔记
    第四次作业
    看《构建之法》有感
    实验四
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10790904.html
Copyright © 2011-2022 走看看