Jawaban
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Multiple Animations Example')),
body: AnimationExample(),
),
);
}
}
class AnimationExample extends StatefulWidget {
@override
_AnimationExampleState createState() => _AnimationExampleState();
}
class _AnimationExampleState extends State<AnimationExample> {
bool _isExpanded = false;
bool _isVisible = true;
void _toggleContainerAnimation() {
setState(() {
_isExpanded = !_isExpanded;
});
}
void _toggleOpacityAnimation() {
setState(() {
_isVisible = !_isVisible;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AnimatedContainer(
duration: Duration(seconds: 1),
width: _isExpanded ? 200 : 100,
height: _isExpanded ? 200 : 100,
color: _isExpanded ? Colors.blue : Colors.red,
alignment: Alignment.center,
child: Text('Animated Container', style: TextStyle(color: Colors.white)),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _toggleContainerAnimation,
child: Text('Toggle Container Animation'),
),
SizedBox(height: 40),
AnimatedOpacity(
opacity: _isVisible ? 1.0 : 0.0,
duration: Duration(seconds: 1),
child: Container(
width: 200,
height: 200,
color: Colors.green,
alignment: Alignment.center,
child: Text('Animated Opacity', style: TextStyle(color: Colors.white)),
),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _toggleOpacityAnimation,
child: Text('Toggle Opacity Animation'),
),
],
);
}
}
Penjelasan:
-
Main Widget:
MyAppadalah widget utama yang menjalankan aplikasi dan menampilkanAnimationExampledi dalam Scaffold dengan AppBar.
-
Stateful Widget:
AnimationExampleadalah Stateful widget yang mengelola dua animasi terpisah: satu untukAnimatedContainerdan satu lagi untukAnimatedOpacity.
-
State Management:
-
Dua boolean
_isExpandeddan_isVisibledigunakan untuk mengontrol status animasi. -
Metode
_toggleContainerAnimationdan_toggleOpacityAnimationmasing-masing mengubah nilai_isExpandeddan_isVisibleuntuk memicu animasi.
-
-
UI Layout:
-
AnimatedContainerdanAnimatedOpacitydigunakan untuk menampilkan animasi. -
Dua tombol
ElevatedButtondigunakan untuk mengaktifkan animasi pada masing-masing widget.
-