Я просто пробую анимацию флаттера и знаю, что контроллеру анимации нужен vsyn c (TickerProvider), поэтому я использовал SingleTickerProviertateMixin. Теперь я хочу замедлить эту следующую анимацию.
class AnimatedGradientText extends StatefulWidget {
final String data;
final double size;
AnimatedGradientText(this.data, {this.size});
@override
_AnimatedGradientTextState createState() => _AnimatedGradientTextState();
}
class _AnimatedGradientTextState extends State<AnimatedGradientText> with SingleTickerProviderStateMixin {
List listOfColors = <Color>[
Colors.red[200],
Colors.blue[200],
Colors.green[200],
Colors.yellow[200],
// Colors.orange[200],
// Colors.teal[200],
// Colors.cyan[200],
// Colors.purple[200],
// Colors.brown[200],
// Colors.amber[200],
// Colors.pink[200],
];
AnimationController _controller;
void shift(){
Color color = listOfColors.removeAt(Random().nextInt(listOfColors.length));
listOfColors.add(color);
}
@override
void initState() {
_controller = AnimationController(vsync: this , duration: Duration(seconds: 5),upperBound: 10,lowerBound: 0);
_controller.forward(from: 0);
_controller.addListener((){
setState(() {
shift();
});
});
super.initState();
}
@override
void deactivate() {
_controller.dispose();
super.deactivate();
}
@override
Widget build(BuildContext context) {
return Text(
widget.data,
style: TextStyle(
fontSize: widget.size*10,
fontFamily: 'AudioWide',
foreground: Paint()..shader = LinearGradient(
colors: listOfColors
).createShader(Rect.fromLTWH(0.0, 0.0, 200.0, 70.0)),
),
);
}
}
По сути, я пытаюсь добиться с помощью этого текста, который имеет градиент и меняет градиент с течением времени. Но анимация слишком быстрая, поэтому она не интерполируется плавно.
Любые предложения относительно более простого способа добиться этого также будут полезны. Спасибо за уделенное время!