Флаттер, масштабирование и преобразование.масштабирование

#flutter #flutter-layout #flutter-animation

Вопрос:

Итак, в явной анимации есть 2 типа, верно?

Разве ScaleTransition и Transform.scale не являются явными анимациями?

Зачем вам нужны два метода?

Комментарии:

1. Transform.scale является статическим виджетом, в то время ScaleTransition как динамический управляется анимацией ( Animation<double> scale ) — например, вы можете передать напрямую AnimationController

2. привет, пскинк! какой из них чаще используется на практике в сложных случаях??

3. после захвата исходного кода flutter кажется, что ScaleTransition он используется два раза чаще

4. @PaemKacit Чтобы понять, что соответствует вашим требованиям, ознакомьтесь с этой статьей medium.com/flutter/…

5. кстати, вот как ScaleTransition это реализовано: github.com/flutter/flutter/blob/c19845a8c3/packages/flutter/lib/… — он расширяет AnimatedWidget и использует Transform.scale внутренний build() метод

Ответ №1:

Transform.scale это виджет статического масштабирования, который не может выполнять анимацию сам по себе и должен быть завернут в a TwennAnimationBuilder . Анимацией нельзя управлять после завершения.

ScaleTransition принимает Animation в качестве значения свой scale параметр, который управляется AnimationController , следовательно, это явная анимация.

Комментарии:

1. итак, вы имеете в виду преобразование.масштаб-это неявная анимация??

2. @PaemKacit нет Transform.scale — это вообще не анимация-это просто статический виджет, и если вы хотите «оживить» его, вы должны использовать его внутри AnimatedBuilder / ValueListenableBuilder / AnimatedWidget например

3. @pskink спасибо!!!!