animasi pada project flutter

Menerapkan Animasi pada Project Flutter

Menerapkan Animasi pada project Flutter

Hai rekan-rekan developer!

Sebelumnya saya sudah berbagi tentang bagaimana cara menerapkan sebuah multitype view pada RecyclerView. Nah, kali ini saya ingin berbagi sedikit tentang bagaimana cara menerapkan animasi pada project Flutter.

Tapi sebelum lanjut, kenapa kita perlu menerapkan sebuah animasi di aplikasi yang sedang kita kembangkan? Dengan menerapkan animasi, kita bisa menambah pengalaman pengguna ketika menggunakan aplikasi kita. Sebaliknya, jika kita tidak menerapkan sebuah animasi, aplikasi akan terlihat kaku. Alhasil, pengguna pun cepat bosan dan bisa memutuskan untuk uninstall aplikasi tersebut dari peranti mereka.

Pada umumnya, animasi secara default terdapat pada transisi perpindahan halaman di dalam aplikasi. Animasinya pun beragam tergantung framework di setiap platform device. Menariknya, kita bisa mengubah dan mengganti animasi tersebut dengan animasi yang kita inginkan.

Animasi Pada Project Flutter: Hero Animation

Untuk aplikasi yang dikembangkan dengan Flutter, terdapat built-in animasi yang bisa langsung kita gunakan untuk mempercantik dan membantu kita untuk menambah pengalaman pengguna. Yaitu, Hero Animation. Animasi yang digunakan untuk menampilkan transisi sebuah widget di dalam UI ketika berpindah halaman. Sebagai contoh, misal kita mempunyai aplikasi seperti berikut:

animasi pada project flutter

Aplikasi di atas terlihat kaku ketika berpindah halaman, namun ketika kita menerapkan hero animation, kita bisa menambahkan animasi pada widget ketika berpindah halaman seakan-akan widget tersebut dipindah dari satu halaman ke halaman lainnya seperti berikut:

animasi pada project flutter

Tidak sampai di situ, kita juga bisa mengubah bentuk dari widget tersebut saat ditampilkan pada halaman tujuan:

animasi pada project flutter

Struktur dari Hero Animation

Pada dasarnya, Hero Animation adalah implementasi dari 2 (dua) widget Hero dengan struktur implementasinya sebagai berikut:

  • Hero widget sebagai start point. Widget hero yang digunakan untuk merepresentasikan grafis dan ditandai dengan sebuah tag yang ditampilkan pada source route.
  • Hero widget sebagai endpoint, atau bisa disebut sebagai hero destination. Widget ini sama seperti widget yang ditampilkan pada source route, yaitu widget yang merepresentasikan grafis dan memiliki tag yang berada pada destination route.
  • Pembuatan route yang berisi tujuan akhir dari hero animation. Route ini berfungsi untuk menentukan widget yang ada di akhir animasi.
  • Menjalankan animasi dengan memanggil destination route yang berada di dalam stack navigator. Navigator akan melakukan operasi push dan pop untuk menjalankan hero animation dengan melakukan komparasi antara tag widget yang ada di source dan destination route.

Flutter akan melakukan kalkulasi nilai batasan hero widget (ukuran interpolasi dan posisi) dari start point ke end point dan akan menjalankan animasi di overlay (bagian yang berada di antara source dan destination route).

Menerapkan Hero Animation

Tanpa berlama-lama, mari kita praktekkan bagaimana menerapkan hero animation. Langsung saja buat project baru Flutter, bisa menggunakan VSCode atau Android Studio. Jika project baru sudah selesai dibuat, buka berkas main.dart kemudian modifikasi kode yang berada di dalamnya menjadi seperti berikut:

Sebelum lanjut menambahkan widget Hero, mari kita tambahkan terlebih dahulu asset gambar yang akan ditampilkan pada widget Image. Silakan unduh assetnya di tautan ini. Namun teman-teman  juga bisa menggunakan asset sed. Lanjut, buatlah folder baru dengan nama asset kemudian tempat asset gambar yang sudah diunduh di dalamnya. Kemudian daftarkan asset gambar tersebut ke dalam berkas pubspec.yaml seperti berikut:

Pastikan kembali indentasi tiap asset agar tidak terjadi error ketika melakukan sync packages.

Setelah selesai, mari kita buka kembali berkas main.dart. Kemudian lengkapi kode pada kelas HomeScreen dengan widget Hero dan beberapa widget lainnya seperti berikut:

Di dalam widget Hero di atas terdapat sebuah widget Image yang menampilkan asset gambar yang sudah kita tambahkan sebelumnya. Selain itu, pada kelas HomeScreen di atas terdapat sebuah widget Button yang digunakan untuk menampilkan halaman baru menggunakan Navigator. Lanjut, buat lagi kelas baru di dalam bekas main.dart dengan nama SecondScreen. Buka, kemudian lengkapi kode di dalamnya seperti berikut:

Jika sudah, secara keseluruhan berkas main.dart kurang lebih akan seperti berikut:

Sampai di sini kita sudah selesai menerapkan Hero Animation. Jika dijalankan, teman-teman akan melihat hasil yang seperti dicontohkan di awal. Nah, yang perlu diperhatikan dalam menerapkan Hero Animation adalah tag hero. Ketika terjadi eror seperti animasi yang tidak dapat berjalan dengan baik, pastikan kembali tag yang digunakan di widget yang berada pada source dan destination route adalah sama. Selain itu, di dalam 1 (satu) source route tidak boleh 2 (dua) atau lebih widget memiliki tag yang sama.Kasus seperti ini akan kita temukan ketika ingin menerapkan Hero Animation pada widget ListView.

Kesimpulan

Seperti yang sudah disebutkan di awal, menerapkan animasi merupakan salah satu cara yang dapat kita gunakan untuk menambah pengalaman pengguna. Dengan bertambahnya pengalaman pengguna, jumlah instal dari aplikasi kita pun akan ikut bertambah. Tentu ini akan sangat menguntungkan.

Sebenarnya masih banyak lagi animasi-animasi yang bisa kita terapkan terutama pada project Flutter. Tinggal bagaimana cara kita menerapkan dan menyesuaikan dengan aplikasi yang sedang dikembangkan. 

Mungkin cukup sampai di sini tutorial kali ini. Jika ada yang mau ditanyakan, silakan tulis di kolom komentar di bawah ya, dan untuk contoh project yang sudah kita coba buat, bisa dilihat di laman Github ini.

Menerapkan Animasi pada project Flutter

Salam!

Ingin baca tulisan saya lainnya? Simak: 

1. https://www.dicoding.com/blog/menerapkan-multitype-view-pada-recyclerview/
2. https://www.dicoding.com/blog/kenal-lebih-dekat-dengan-constraintlayout/

Ingin juga dapat info update tentang tutorial di blog kami via sosial media? bisa ! Follow kami ya

animasi pada project flutter

Belajar mengembangkan aplikasi atau game dengan kurikulum yang telah divalidasi langsung oleh industri dengan Dicoding Academy.

Belajar di Dicoding Sekarang →
Share this:

Code Reviewer Dicoding Indonesia