Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 为“颤振”窗口小部件的高程设置动画_Dart_Flutter_Flutter Layout - Fatal编程技术网

Dart 为“颤振”窗口小部件的高程设置动画

Dart 为“颤振”窗口小部件的高程设置动画,dart,flutter,flutter-layout,Dart,Flutter,Flutter Layout,我想在不使用两只手的情况下为小部件的高度设置动画(: 我试图更改material widget的标高,但没有任何更改 要设置立面动画,您需要使用动画控制器自己处理动画。以下是完整示例: import 'package:flutter/material.dart'; void main() => runApp(App()); class App extends StatelessWidget { @override Widget build(BuildContext contex

我想在不使用两只手的情况下为小部件的高度设置动画(:

我试图更改material widget的标高,但没有任何更改


要设置立面动画,您需要使用
动画控制器自己处理动画。以下是完整示例:

import 'package:flutter/material.dart';

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

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: AnimatedElevationButton(),
        ),
      ),
    );
  }
}

class AnimatedElevationButton extends StatefulWidget {
  @override
  _AnimatedElevationButtonState createState() =>
      _AnimatedElevationButtonState();
}

class _AnimatedElevationButtonState extends State<AnimatedElevationButton>
    with SingleTickerProviderStateMixin {
  AnimationController _animationController;
  Animation<double> _animationTween;

  @override
  void initState() {
    super.initState();

    _animationController = AnimationController(
      duration: Duration(milliseconds: 30),
      vsync: this,
    );
    _animationTween =
        Tween(begin: 20.0, end: 0.0).animate(_animationController);
    _animationController.addListener(() {
      setState(() {});
    });
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTapDown: _onTapDown,
      onTapUp: _onTapUp,
      child: Material(
        color: Colors.red,
        borderRadius: BorderRadius.circular(8.0),
        elevation: _animationTween.value,
        child: SizedBox(
          width: 100,
          height: 50,
        ),
      ),
    );
  }

  void _onTapDown(TapDownDetails details) {
    _animationController.forward();
  }

  void _onTapUp(TapUpDetails details) {
    _animationController.reverse();
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(App());
类应用程序扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:中(
子对象:AnimatedElevationButton(),
),
),
);
}
}
类AnimatedElevationButton扩展StatefulWidget{
@凌驾
_AnimatedElevationButtonState createState()=>
_AnimatedLevationButtonState();
}
类_AnimatedElevationButtonState扩展状态
使用SingleTickerProviderStateMixin{
AnimationController _AnimationController;
动画(animationTween),;
@凌驾
void initState(){
super.initState();
_animationController=animationController(
持续时间:持续时间(毫秒:30),
vsync:这个,,
);
_动画间=
Tween(开始:20.0,结束:0.0)。设置动画(_animationController);
_animationController.addListener((){
setState((){});
});
}
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTapDown:\u onTapDown,
onTapUp:\u onTapUp,
儿童:材料(
颜色:颜色,红色,
边界半径:边界半径。圆形(8.0),
标高:_animationTween.value,
孩子:大小盒子(
宽度:100,
身高:50,
),
),
);
}
void\u onTapDown(tappdown详细信息){
_animationController.forward();
}
void\u onTapUp(TapUpDetails){
_animationController.reverse();
}
}