我需要 call 用户注意按钮。我想到的第一个想法是添加一个眨眼动画。我真的不知道该怎么做,但是我尝试通过以下代码使其工作:
Timer timer = new Timer(new Duration(seconds: 1), () {
//basic logic to change the color variable here
setState(() {});
});
很简单,第二个
setState
被调用,并且再次创建窗口小部件。但这不起作用,计时器仅被调用一次。而且,除此之外,在
setState
中调用Timer
对我来说似乎是错误的。有更好的方法吗?
最佳答案
您可以使用AnimationController
和FadeTransition
小部件轻松实现此目标,这里有代码:
class MyBlinkingButton extends StatefulWidget {
@override
_MyBlinkingButtonState createState() => _MyBlinkingButtonState();
}
class _MyBlinkingButtonState extends State<MyBlinkingButton>
with SingleTickerProviderStateMixin {
AnimationController _animationController;
@override
void initState() {
_animationController =
new AnimationController(vsync: this, duration: Duration(seconds: 1));
_animationController.repeat(reverse: true);
super.initState();
}
@override
Widget build(BuildContext context) {
return FadeTransition(
opacity: _animationController,
child: MaterialButton(
onPressed: () => null,
child: Text("Text button"),
color: Colors.green,
),
);
}
@override
void dispose() {
_animationController.dispose();
super.dispose();
}
}
用法:main() {
runApp(
MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Material(
child: Center(
child: MyBlinkingButton(),
),
),
),
);
}
DartPad example关于timer - flutter -闪烁按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51733044/