Сделайте эту анимацию трепещущей для флажка или текстовой категории Row - PullRequest
0 голосов
/ 06 августа 2020

Я смотрю эту анимацию для Flutter, кто-нибудь знает, возможно ли это?

поскольку я создаю приложение, которое должно проверять, все ли категории проверены пользователем, если не при нажатии кнопки должен отметить те, которые на самом деле не проверены,

Я даю короткое видео об устройстве Oneplus 8 pro, которое создает анимацию, которую я ищу

, если это еще не сделано виджетом или чем-то в по крайней мере, чтобы иметь название того, как эта анимация называется, было бы действительно полезно.

вот пример gif:

https://gfycat.com/similarbonyeyra

Спасибо вас так много!

1 Ответ

0 голосов
/ 06 августа 2020

Вот весь код для такой анимации. Конечно, вы можете настроить его по своему усмотрению ..

import 'package:flutter/material.dart';

class MyBlinkingButton extends StatefulWidget {
  @override
  _MyBlinkingButtonState createState() => _MyBlinkingButtonState();
}

class _MyBlinkingButtonState extends State<MyBlinkingButton>
    with SingleTickerProviderStateMixin {
  AnimationController _animationController;
  Animation<double> animation;
  int count = 1;
  @override
  void initState() {
    _animationController = new AnimationController(
        vsync: this, duration: Duration(milliseconds: 300));
    animation = Tween<double>(begin: 0, end: 1).animate(_animationController)
      ..addStatusListener((status) {
        if (status == AnimationStatus.completed) {
          if (count < 3) _animationController.reverse();
        } else if (status == AnimationStatus.dismissed) {
          _animationController.forward();
          count++;
        }
      })
      ..addStatusListener((state) => print('$state'));
    _animationController.forward();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return FadeTransition(
      opacity: _animationController,
      child: MaterialButton(
        onPressed: () {
          setState((){
          count = 0;
          _animationController.reset();
          _animationController.forward();});
        },
        child: Text("Text button"),
        color: Colors.green,
      ),
    );
  }

  @override
  void dispose() {
    _animationController.dispose();
    super.dispose();
  }
}

main() {
  runApp(
    new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Material(
        child: Center(
          child: MyBlinkingButton(),
        ),
      ),
    ),
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...