ami*_*fur 8 animation android dart flutter
我试图向此页面添加一个按钮,该按钮将(播放或暂停)背景中的波浪动画。代码链接:https : //github.com/apgapg/flutter_profile/blob/master/lib/page/intro_page.dart
我已经尝试了很多东西,但是由于我对颤动动画仍然很糟糕,所以我仍然没有结果。
提前致谢。
Cop*_*oad 11
我不知道那个代码,这就是我所做的。您所需要的只是Controller.reset()停止动画并Controller.repeat()启动它。
但是,如果您只需要启动一次动画,请使用Controller.forward()和Controller.reverse()。
void main() => runApp(MaterialApp(home: Scaffold(body: HomePage())));
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> with SingleTickerProviderStateMixin {
AnimationController _controller;
bool _isPlaying = true;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
lowerBound: 0.3,
duration: Duration(seconds: 3),
)..repeat();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Animation")),
body: Stack(
alignment: Alignment.center,
children: <Widget>[
_buildCircularContainer(200),
_buildCircularContainer(250),
_buildCircularContainer(300),
Align(child: CircleAvatar(backgroundImage: AssetImage("assets/images/profile.png"), radius: 72)),
Align(
alignment: Alignment(0, 0.5),
child: RaisedButton(
child: Text(_isPlaying ? "STOP" : "START"),
onPressed: () {
if (_isPlaying) _controller.reset();
else _controller.repeat();
setState(() => _isPlaying = !_isPlaying);
},
),
),
],
),
);
}
Widget _buildCircularContainer(double radius) {
return AnimatedBuilder(
animation: CurvedAnimation(parent: _controller, curve: Curves.fastLinearToSlowEaseIn),
builder: (context, child) {
return Container(
width: _controller.value * radius,
height: _controller.value * radius,
decoration: BoxDecoration(color: Colors.black54.withOpacity(1 - _controller.value), shape: BoxShape.circle),
);
},
);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
当您直接访问 AnimationController 时,此代码段将开始/停止动画,无论它在哪里停止。
animationController.isAnimating
? animationController.stop()
: animationController.forward();
Run Code Online (Sandbox Code Playgroud)
这里的.isAnimating属性是 bool 类型,当 animationController 正在动画时为真。根据结果.stop()/.forward()将分别停止/开始动画。
| 归档时间: |
|
| 查看次数: |
7247 次 |
| 最近记录: |