Flutter Animation: Helppo tapa oppia Flutter Implicit Animation Widgets Pt. 1
Flutter Animation Widgets
Implicit Widgets: Widgetit, jotka ovat valmiita animoitaviksi heti – widgetit kuten AnimatedContainer
, Hero
, FadeTransition
.
Explisiittiset Widgetit: Täällä määrittelet eksplisiittisesti, miltä animaatiowidgettiesi pitäisi näyttää tai käyttäytyä käyttämällä Animator
, AnimationController
, Tween
ja muita.
Tässä artikkelissa keskitymme siihen, miten Flutterin implisiittiset animaatiowidgetit käyttäytyvät, miten ne on toteutettu ja katsomme, missä voimme soveltaa niitä.
Kuvio…
Aluksi haluan tuoda esiin kuvion implisiittisten animaatiowidgettiesi käyttämiseksi. Jos ei kaikilla, niin suurimmalla osalla tässä käsiteltävistä widgetistä on samanlainen asetelma.
Kuvio 101:
- Määritellään erityiset ominaisuudet, jotka ovat vastuussa widgetin animaation käynnistämisestä.
- Luo AnimatedSomethingWidget määritellyillä ominaisuuksilla, kuten
height
,width
. - Käynnistä animaatio rakentamalla widget uudelleen, mikä tehdään yleisimmin käyttöliittymissä
setState()
:n avulla, määritellyille ominaisuuksille annetuilla uusilla arvoilla. Tässä artikkelissa viittaan tähän animaation ”laukaisijana”.
Lisäksi luokittelen widgetit niiden asetusten monimutkaisuuden perusteella (Sarja Pt. 1: Helppo, Sarja Pt. 2: Keskivaikea ja Edistynyt)- lähdekoodi saatavilla alla.
AnimatedContainer
Luokan Container
avulla voit luoda widgetin, jolla on tietyt ominaisuudet, kuten height
, width
, color
jne. Tätä käytetään yleisesti lapsiwidgettien käärimiseen, jotta niiden ominaisuuksia, kuten kokoja, pehmusteita ja marginaaleja, voidaan hallita kätevästi.
Käyttämällä AnimatedContainer
voit animoida tavallisen Container
:n vain muuttamalla sen ominaisuuksia. Se muuttaa väriä ja kokoja automaattisesti ilman, että sinun tarvitsee erikseen asettaa mukautettuja tweenejä tai ohjaimia.
Setup
- Luo widgetin oletusarvoisat ominaisuudet.
- Rakenna
AnimationContainer
käyttäen ominaisuuksia. - Aloita animaatio rakentamalla widget uudelleen uusilla ominaisuuksilla.
Triggerit
- mitat/koot (esim.
height
,width
,borderRadius
,padding
) - värit, muoto ja enemmän!
Muut hienosäädöt
Voit myös asettaa valinnaisen curve
, jotta animaatio tuntuisi sulavammalta asettamiesi asetusten perusteella.
AnimatedContainer(
curve: Curves.bounceInOut,
...
)
Luo mahtavia animoituja pylväsdiagrammeja tämän widgetin avulla!
Viikon flutter-widget
https://www.youtube.com/watch?v=yI-8QHpGIP4
AnimatedCrossFade
Viikon flutter-widget
https://www.youtube.com/watch?v=yI-8QHpGIP4
AnimatedCrossFade
Ristikkäisliukuma-animaatioiden avulla (a.k.a. dissolve) häivyttävät vähitellen UI-komponentin pois ja samalla häivyttävät toisen UI-komponentin sisään.
AnimatedCrossFade
on widget, joka tarjoaa cross-fade-siirtymän, kun vaihdetaan kahden annetun lapsiwidgetin välillä.
Setup
- Määritä
bool
-muuttuja, joka toimii lippuna widgettien näyttämiselle/piilottamiselle - Määritä lippumuuttuja
AnimatedCrossFade
-widgetille. - Aloita animaatio päivittämällä
crossFadeState
-ominaisuuden arvo.
Trigger
crossFadeState
Lisäparannukset
Voit asettaa valinnaisen curve
kautta firstCurve
ja secondCurve
.
AnimatedCrossFade(
firstCurve: Curves.bounceIn,
secondCurve: Curves.bounceOut,
...
)
Parannetaan pylväsdiagrammiamme lisäämällä latausindikaattori!
AnimatedDefaultTextStyle
DefaultTextStyle
-luokka on alkuperäinen tekstityyli, jota sovelletaan Text
-vidgettiin. AnimatedDefaultTextStyle
:n avulla voit nyt tehdä Text
-widgeteistämme tai vaikkapa CTA:ista houkuttelevampia.
Setup
- Määrittele ei-loppupään
textStyle
-muuttuja. - Määritä määritelty muuttuja widgetin
textStyle
-ominaisuuteen. - Aloita animaatio päivittämällä ilmoitettu tyyli.
Triggers
- Vaihtoehto 1. Muuttamalla suoraan
textStyle
.
- Vaihtoehto 2. Päivittämällä ominaisuuksia widgettiin liitetyn
TextStyle
:n sisällä.
Lisäyksiä
AnimatedDefaultTextStyle(
curve: Curves.elasticIn,
...
)
Lisätäänpä pylväsdiagrammiemme sisälle tarrat!
AnimatedPadding
AnimatedPadding
auttaa siirtymään pehmusteiden muutoksiin Padding
widgetissä ajon aikana tietyn ajan kuluessa.
Setup
- Muuttujan
padding
määrittäminen. - Luo muuttuja
AnimatedPadding
, jossa on ilmoitettupadding
. - Aloita animaatio päivittämällä ilmoitettu
padding
arvo.
Trigger
padding
Lisäyksiä
AnimatedPadding(
curve: Curves.elasticInOut,
...
)
Palaamme takaisin animoituihin pylväsdiagrammeihimme!
Mitäpäs jos lisäisit lapselle Container
? Kääritään se AnimatedPadding
:n sisään, jonka insertit työntävät sitä ylhäältä.
Viikon Flutter Widget
https://www.youtube.com/watch?v=PY2m0fhGNz4
AnimatedOpacity
Opacity on melko itsestään selvä – se vastaa UI-komponentin läpinäkyvyyden päivittämisestä. AnimatedOpacity
on widget oletusarvoisen Opacity
widgetin päällä – se animoi muutokset sen opacity
-ominaisuuden perusteella.
Setup
- Määrittele animaation
duration
. - Määrittele muuttuja
_opacity
. - Aloita animaatio päivittämällä ilmoitettu
_opacity
-arvo.
Trigger
opacity
Huomaa, että se on melkein samanlainen kuin AnimatedCrossFade
. Kuten asetuksista näkyy, tämä ei kuitenkaan vaadi kahden lapsiwidgetin käärimistä – widget vain häivyttää.
Viikon flutterwidget
https://www.youtube.com/watch?v=9hltevOHQBw
AnimatedPhysicalModel
Viikon widget, joka siirtyy automaattisesti PhysicalModel
widgetin borderRadius
ja elevation
muutokseen.