Flutter 颤振:创建添加关闭动画
我想创建一个作为Flutter 颤振:创建添加关闭动画,flutter,flutter-animation,Flutter,Flutter Animation,我想创建一个作为图标的开始图标。添加和作为图标的结束图标。在AnimatedIcon小部件中关闭。例如,它们是一个预构建的add_event动画,对应于开始动画=add和结束动画=event。我想将结束动画更改为图标。关闭。目前还不清楚如何做到这一点,因为没有现成的文档可用于创建自定义动画。我能找到的最相关的代码是:。我认为我应该使用vitool。我怎样才能开始创作新的动画?所以我有一些空闲时间,这是很多人在某个时候可能想要使用的东西,因为我们没有太多已经提供给我们的动画指令选项。 所以我继续构
图标的开始图标。添加和作为图标的结束图标。在AnimatedIcon
小部件中关闭。例如,它们是一个预构建的add_event
动画,对应于开始动画=add
和结束动画=event
。我想将结束动画更改为图标。关闭。目前还不清楚如何做到这一点,因为没有现成的文档可用于创建自定义动画。我能找到的最相关的代码是:。我认为我应该使用vitool
。我怎样才能开始创作新的动画?所以我有一些空闲时间,这是很多人在某个时候可能想要使用的东西,因为我们没有太多已经提供给我们的动画指令选项。
所以我继续构建了这个小软件包,并将其上传到pub-dart上,它可以解决您需要的问题。
使用此软件包,您可以设置任意两个图标的动画
查看酒吧飞镖
只需将包添加到pubspec.yaml中,如下所示:
animate_icons:
AnimateIcons(
startIcon: Icons.add,
endIcon: Icons.close,
size: 60.0,
onStartIconPress: () {
print("Clicked on Add Icon");
},
onEndIconPress: () {
print("Clicked on Close Icon");
},
duration: Duration(milliseconds: 500),
color: Theme.of(context).primaryColor,
clockwise: false,
),
然后像这样使用这个小部件:
animate_icons:
AnimateIcons(
startIcon: Icons.add,
endIcon: Icons.close,
size: 60.0,
onStartIconPress: () {
print("Clicked on Add Icon");
},
onEndIconPress: () {
print("Clicked on Close Icon");
},
duration: Duration(milliseconds: 500),
color: Theme.of(context).primaryColor,
clockwise: false,
),
是的,朋友,您需要创建自己的动画
我已经为您提到的情况编写了代码
我过去常玩widget,而且
import'dart:math';
进口“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类_MyAppState使用SingleTickerProviderStateMixin扩展状态{
动画控制器;
双_角=0;
@凌驾
void initState(){
动画控制器=
AnimationController(vsync:this,duration:duration(毫秒:300));
animatedController.addListener((){
设置状态(){
_角度=animatedController.value*45/360*pi*2;
});
});
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:中(
孩子:InkResponse(
onTap:(){
if(animatedController.status==AnimationStatus.completed)
animatedController.reverse();
else if(animatedController.status==AnimationStatus.discomered)
animatedController.forward();
},
子对象:Transform.rotate(
角度:_角度,
子:图标(
Icons.add,
尺码:50,
),
),
),
)));
}
}
如果您需要定制更多的内容,请查看如果两个图标之间的距离足够大,那么该软件包可能会很有用
class AnimationButton扩展StatefulWidget{
@凌驾
_AnimateDictionButtonState createState()=>\u AnimateDictionButtonState();
}
类_animateDictionButtonState扩展状态
使用SingleTickerProviderStateMixin{
bool _isopend=false;
AnimationController _AnimationController;
动画"进步",;
@凌驾
void initState(){
super.initState();
_动画控制器=
AnimationController(vsync:this,duration:duration(毫秒:300))
…addListener(){
setState((){});
});
_进展=
Tween(开始:0.0,结束:1.0)。设置动画(_animationController);
}
@凌驾
无效处置(){
_animationController.dispose();
super.dispose();
}
void animate(){
如果(_等间距){
_animationController.reverse();
}否则{
_animationController.forward();
}
设置状态(){
_等间距=!\u等间距;
});
}
@凌驾
小部件构建(构建上下文){
返回图标按钮(
onPressed:设置动画,
图标:SimpleAnimatedIcon(
startIcon:Icons.add,
endIcon:Icons.close,
进展:_进展,
));
}
}
创建一个添加关闭动画图标是什么意思?@mFeinstein我想创建一个开始图标作为图标。在AnimatedIcon
小部件中添加和图标的结束图标。关闭。例如,它们是一个预构建的add_event
动画,对应于开始动画=add
和结束动画=event
。我想将结束动画更改为关闭。好的,明白了,请将此添加到您的问题描述中。vitool似乎不是供公众使用的,它在自述文件中提到:谢谢。我正在寻找要输出的AnimatedIconData
对象。这就是我没有编写自定义动画的原因。“用你的软件包还可以这样做吗?”@Black抱歉,但我认为这是不可能的。提供给我们的所有动画指令都是定制的动画矢量,如果你只需要它,我想你就必须构建它。我建议的另一种方法是在此处使用Flare构建动画小部件,然后将其集成到应用程序中。但是如果我是你的话,我不会使用动画图标小部件来显示没有提供给我们的动画图标。如果你没有找到任何方法,你仍然可以尝试插件。我相信这会解决这个用例。你为我节省了很多时间。我们待会在酒吧见。