首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未动画的AnimatedContainer按钮类

未动画的AnimatedContainer按钮类
EN

Stack Overflow用户
提问于 2019-08-14 07:58:34
回答 1查看 470关注 0票数 0

我试着做一个类,如果你点击一个按钮,它会长出来,然后再次收缩。但是动画不起作用

这就是我所拥有的

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:flutter_button_collection/flutter_button_collection.dart';

class AnimatedShadowButton extends StatefulWidget {
  final double height;
  final double width;
  final double finalHeight;
  final double finalWidth;

  const AnimatedShadowButton(
      {Key key, this.height, this.width, this.finalHeight, this.finalWidth})
      : assert(height < finalHeight),
        assert(width < finalWidth),
        super(key: key);

  @override
  _AnimatedShadowButtonState createState() => _AnimatedShadowButtonState();
}

class _AnimatedShadowButtonState extends State<AnimatedShadowButton> {
  double buttonHeight;
  double buttonWidth;

  void aniButo() {
    setState(() {
      buttonHeight = widget.height <= widget.finalHeight
          ? widget.finalHeight
          : widget.height;
      buttonWidth =
          widget.width <= widget.finalWidth ? widget.finalWidth : widget.width;
    });
  }

  Widget build(BuildContext context) {
    return AnimatedContainer(
      duration: Duration(milliseconds: 300),
      curve: Curves.easeInBack,
      width: buttonWidth,
      height: buttonHeight,
      child: AVLButton(
        onPressed: () {
          aniButo();
        },
        child: Text("This is a text"),
        elevation: 30.0,
      ),
    );
  }
}

如果我给出了buttonHeightbuttonWidth值,并且所有东西都是静态的,那么它可以工作,但是我希望能够这样使用它。

代码语言:javascript
复制
AnimatedShadowButton(
              height: 60.0,
              width: 100.0,
              finalHeight: 90.0,
              finalWidth: 150.0,
            ),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 08:07:49

我认为你必须改变aniButo方法。如下所示:

代码语言:javascript
复制
void aniButo() {
  setState(() {
    buttonHeight = buttonHeight == widget.height
        ? widget.finalHeight
        : widget.height;
    buttonWidth = buttonWidth == widget.width 
        ? widget.finalWidth 
        : widget.width;
  });
}

UPD

_AnimatedShadowButtonState中添加initState方法

代码语言:javascript
复制
@override
void initState() {
  buttonHeight = widget.height
  buttonWidth = widget.width
  super.initState();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57490487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档