Vereenvoudigen van animaties in Flutter met Impliciet geanimeerde Widgets
Een CrossFade is een vloeiende overgang van de ene widget naar de andere met een bepaalde duur. Flutter maakt dit eenvoudig met behulp van een AnimatedCrossFade widget.
Zo wordt een AnimatedCrossFade gedefinieerd:
AnimatedCrossFade(
firstChild: // Your first element here,
secondChild: // Element after transition,
crossFadeState: // State of the transition,
duration: Duration(milliseconds: 1500),
),
We leveren:
- De widget voor de overgang
firstChild: Container(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: CircularProgressIndicator(),
),
height: 200.0,
width: 200.0,
),
2. De widget na de overgang
secondChild: Container(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: FlutterLogo(),
),
height: 100.0,
width: 200.0,
),
3. De toestand van de overgang (Is de overgang al gebeurd of niet)
(Hier is firstStateEnabled een boolean die we kunnen veranderen om de toestand te veranderen.)
crossFadeState: firstStateEnabled
? CrossFadeState.showFirst
: CrossFadeState.showSecond,
4. De duur van de overgang
duration: Duration(milliseconds: 1500),
Deze hoeveelheid code is voldoende om ons het bovenstaande voorbeeld te geven. De overgang wordt eenvoudig getriggerd door de crossFadeState te veranderen.
Note: Als de twee kinderen van verschillende grootte zijn, dan gaat hij automatisch van de ene grootte over naar de andere.
Hier is een demo:
AnimatedOpacity
AnimatedOpacity animeert veranderingen in opacity, d.d.w.z. hoe zichtbaar een widget is. Een opacity van 0 maakt een widget volledig transparant, terwijl een opacity van 1 volledig zichtbaar is.
AnimatedOpacity wordt gedeclareerd als:
AnimatedOpacity(
opacity: // Your variable holding opacity value,
duration: // Duration of the transition,
child: FlutterLogo(),
)
Gelijk aan de laatste paar widgets, in AnimatedOpacity, verander je de opacity en setState en het animeert automatisch de verandering in opacity.
In het bovenstaande voorbeeld wordt het gedeclareerd als
AnimatedOpacity(
child: FlutterLogo(size: 100.0,),
opacity: myOpacity,
duration: Duration(seconds: 1),
),
Wanneer op de knop wordt geklikt, verandert het eenvoudig de opaciteit en stelt de status in.
onPressed: () {
myOpacity = 0.0;
setState(() {});
},