美文网首页
Flutter-抽屉效果只能点击

Flutter-抽屉效果只能点击

作者: 秋分落叶 | 来源:发表于2019-04-10 10:35 被阅读0次

先看一下效果:

未展开图:

展开图:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override

  Widget build(BuildContext context) {

    return MaterialApp(

      theme: ThemeData(

        primaryColor: Colors.red,

        primarySwatch: Colors.teal,

      ),

      home: BackDrop(),

    );

  }

}

class BackDrop extends StatefulWidget {

  @override

  _BackDropState createState() => _BackDropState();

}

class _BackDropState extends State<BackDrop>

    with SingleTickerProviderStateMixin {

  AnimationController animationController;

  @override

  void initState() {

    super.initState();

    animationController = AnimationController(

      vsync: this,

      duration: Duration(milliseconds: 100),

      value: 1,

    );

  }

  @override

  void dispose() {

    super.dispose();

    animationController.dispose();

  }

  bool get isPanelVisible {

    final AnimationStatus status = animationController.status;

    return status == AnimationStatus.completed ||

        status == AnimationStatus.forward;

  }

  Animation<RelativeRect> getPanelAnimation(BoxConstraints constraints) {

    final height = constraints.biggest.height;

    final backHeight = height - 32;

    final frontHeight = -32.0;

    return RelativeRectTween(

            begin: RelativeRect.fromLTRB(0.0, backHeight, 0.0, frontHeight),

            end: RelativeRect.fromLTRB(0.0, 60.0, 0.0, 0.0))

        .animate(CurvedAnimation(

            parent: animationController, curve: Curves.easeInOut));

  }

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        title: Text('Backdrop'),

        leading: IconButton(

          onPressed: () {

            animationController.fling(velocity: isPanelVisible ? -1.0 : 1.0);

          },

          icon: AnimatedIcon(

            icon: AnimatedIcons.close_menu,

            progress: animationController.view,

          ),

        ),

      ),

      body: LayoutBuilder(

        builder: (BuildContext context, BoxConstraints constraints) {

          return Container(

            child: Stack(

              children: <Widget>[

                Container(

                  color: Colors.blue,

                  child: Center(

                    child: Text(

                      'Back Panl',

                      style: TextStyle(color: Colors.white, fontSize: 28.0),

                    ),

                  ),

                ),

                PositionedTransition(

                  rect: getPanelAnimation(constraints),

                  child: Material(

                    elevation: 4.0,

                    borderRadius: BorderRadius.only(

                      topLeft: Radius.circular(16.0),

                      topRight: Radius.circular(16.0),

                    ),

                    child: Column(

                      children: <Widget>[

                        Container(

                          height: 32,

                          child: Text(

                            'Shop Here',

                            style: TextStyle(color: Colors.red),

                          ),

                        ),

                        Expanded(

                          child: Center(

                            child: Text('Front Panl',

                                style: TextStyle(

                                    color: Colors.red, fontSize: 28.0)),

                          ),

                        )

                      ],

                    ),

                  ),

                )

              ],

            ),

          );

        },

      ),

    );

  }

}

相关文章

  • Flutter-抽屉效果只能点击

    先看一下效果: 未展开图: 展开图: import 'package:flutter/material.dart'...

  • Flutter-抽屉效果只能拖拽

    flutter_new类似日历的抽屉 仿QQ侧滑菜单

  • 抽屉效果

    抽屉效果拖拽 抽屉效果定位 给抽屉效果的view添加数据

  • 抽屉效果

    抽屉效果 左侧 抽屉 抽屉

  • 抽屉效果

    简洁易用的抽屉效果,一如既往的详细注解 github地址:[https://github.com/nemo316/...

  • 抽屉效果

    思路:跟控制器(rootVc)添加子控制器(下面三个)的view在跟控制器的 view 上面。(注意三个子控制器的...

  • 抽屉效果

    一.RESideMenu 现在大多App的主框架都是UITabBarController加若干导航控制器或者是带有...

  • 抽屉效果

    创建一个控制器,给控制器的view添加两个view 给上面的view添加手势,在手指拖动的时候,对上面的view做...

  • 抽屉效果

    #import "SSYViewController.h" #define ScreenW [UIScreen m...

  • 抽屉效果

    抽屉效果 效果图: 第一步:搭建界面 第二步.添加手势: 第三步:当手指松开时做到自动定位.

网友评论

      本文标题:Flutter-抽屉效果只能点击

      本文链接:https://www.haomeiwen.com/subject/qtogiqtx.html