我需要 call 用户注意按钮。我想到的第一个想法是添加一个眨眼动画。我真的不知道该怎么做,但是我尝试通过以下代码使其工作:

Timer timer = new Timer(new Duration(seconds: 1), () {
  //basic logic to change the color variable here
  setState(() {});
});

很简单,第二个setState被调用,并且再次创建窗口小部件。

但这不起作用,计时器仅被调用一次。而且,除此之外,在setState中调用Timer对我来说似乎是错误的。

有更好的方法吗?

最佳答案

您可以使用AnimationControllerFadeTransition小部件轻松实现此目标,这里有代码:

  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/

10-14 12:20
查看更多