Flutter Firebase Storage

How to implement Firebase Storage with Flutter

Yudi Setiawan
Nusanet Developers
13 min readApr 6, 2020

--

Pengenalan

Seperti yang kita ketahui bahwa Firebase merupakan salah satu mBaaS yang cukup terkenal dikalangan mobile developer karena fitur-fiturnya yang cukup lengkap dan bagus diantaranya adalah sebagai berikut:

  1. Firebase Authentication
  2. Firebase Database
  3. Firebase Storage
  4. Firebase Crashlytics
  5. Firebase Cloud Messaging

Diatas merupakan beberapa fitur yang sering saya pakai dan sebenarnya masih banyak lagi fitur-fitur lainnya dari Firebase yang tidak bisa saya sebutkan pada tulisan ini. Selain itu, saya juga pernah membahas beberapa fitur Firebase di Flutter yang bisa kamu baca di link berikut ya.

Pada tulisan ini yang akan saya bahas adalah Firebase Storage. Firebase Storage berfungsi untuk melakukan penyimpanan file seperti gambar, video, audio, dokumen, dan lain-lainnya.

Design App

Adapun referensi design dari contoh app yang akan kita buat pada tulisan ini adalah sebagai berikut.

Dan berikut adalah output dari app yang akan kita buat.

Output app yang akan dibuat

Contoh Projek

Buat Projek

Silakan kita buat projek baru dengan nama flutter_firebase_storage.

Buat projek

Persiapan Aset

Adapun beberapa aset yang perlu kita persiapkan pada pembuatan contoh projek kali ini yaitu sebagai berikut.

  • Gambar foto profil atau pakai foto kamu sendiri juga boleh.
  • Foto yang akan diupload ke Firebase Storage dan
  • Font Mont Extra Light.

Jika kamu ingin mengikuti tulisan ini menggunakan aset yang sama maka kamu bisa unduh aset-aset tersebut di sini ya.

Persiapan Projek Firebase Console

Perlu diketahui bahwa untuk bisa memulai contoh projek kali ini kita memerlukan sebuah projek di Firebase Console. Jadi, bagi kamu yang belum ada atau belum pernah buat projek di Firebase Console silakan buat dulu ya. Ditulisan ini saya tidak akan menjelaskannya karena menurut saya langkah-langkah pembuatannya cukup gampang. Pastikan saja pada langkah ini kamu semua sudah bisa mengunduh file google-service.json untuk Android dan GoogleService-Info.plist untuk iOS dan masukkan file tersebut kedalam projek kita.

Masukkan file google-services.json dan GoogleService-Info.plist kedalam projek

Persiapan pubspec.yaml

Sekarang kita perlu buka file pubspec.yaml dan ubah bagian dependencies-nya menjadi seperti berikut.

Dan ubah juga bagian aset dan font-nya.

Sebelum menjalankan perintah flutter pub get pastikan terlebih dahulu bahwa kamu sudah memasukkan file-file aset yang diperlukan kedalam direktori assets. File-file ini berasal dari file aset yang sudah kamu unduh diawal tadi ya.

Masukkan file aset yang diperlukan

Setelah itu baru jalankan perintah flutter pub get .

Pembuatan UI

Sebelum kita masuk ke fiturnya kita perlu membuat UI-nya terlebih dahulu agar nanti pada saat pembuatan fiturnya kita lebih gampang.

Buat Tampilan Dasar

Silakan buka file main.dart dan ubah menjadi seperti berikut.

Tampilan dasar

Ingat ya, pada tulisan ini kita cuma menggunakan satu file saja yaitu file main.dart.

Buat Widget Header

Selanjutnya, kita akan buat bagian AppBar-nya. Kali ini kita buatnya custom ya tidak menggunakan widget AppBar. Silakan buat fungsi berikut ya.

Dan jangan lupa panggil fungsi tersebut didalam fungsi build ya.

Buat widget Header

Buat Widget Container Content Profile

Selanjutnya kita akan membuat fungsi untuk membuat widget container content profile-nya.

Dan panggil fungsi tersebut didalam fungsi build.

Buat widget container content profile

Buat Widget Foto Profil

Selanjutnya, kita akan membuat fungsi yang akan menampilkan widget foto profil.

Dan jangan lupa panggil fungsi tersebut didalam fungsi build ya.

Buat widget foto profil

Buat Widget Nama dan Profesinya

Langkah selanjutnya adalah kita akan membuat widget yang akan menampilkan info profil-nya seperti nama dan job title. Hal pertama yang perlu kita buat sebelum lanjut buat widget info profil adalah kita perlu membuat WidgetTextMont seperti berikut.

Lalu, silakan kita ubah kode komentar berikut // TODO: buat content profile menjadi seperti berikut.

Buat widget untuk menampilkan nama dan job title

Buat Widget Jumlah Post, Follower dan Following

Selanjutnya, kita akan membuat widget yang akan menampilkan info jumlah post, follower, dan following. Silakan kita ubah kode komentar // TODO: buat widget untuk menampilkan jumlah posts, followers dan following menjadi seperti berikut.

Seperti yang kamu lihat pada kode diatas kita ada memanggil fungsi _buildWidgetPostsFollowersFollowing() maka, kita perlu membuat fungsi tersebut.

Buat widget untuk menampilkan jumlah post, follower, dan following

Buat Widget Button Follow dan Chat

Langkah berikutnya ialah kita akan membuat widget untuk menampilkan button follow dan chat. Silakan kita ubah kode komentar berikut

Menjadi seperti berikut.

Selanjutnya, kita buat fungsi baru bernama _buildWidgetButtonFollowAndChat() .

Buat widget button follow dan chat

Buat Widget Header My Posts dan Switch View

Selanjutnya kita akan membuat widget yang menampilkan label My Posts dan icon untuk berganti view dari mode list ke grid dan sebaliknya. Silakan kita ubah kode komentar berikut

Menjadi seperti berikut.

Kemudian, kita buat fungsi baru berikut ya.

Buat widget untuk menampilkan label My Posts dan switch view

Pembuatan Fitur

Fitur Menampilkan Gambar Firebase Storage

Setelah kita selesai membuat UI-nya selanjutnya kita akan membuat fitur untuk menampilkan gambar dari Firebase Storage. Silakan kita ubah kode komentar berikut.

Menjadi seperti berikut.

Selanjutnya, kita buat satu fungsi baru bernama _buildWidgetMyPosts() .

Jadi, tekniknya ialah pada kode diatas kita menampilkan gambarnya dari collection yang bernama myPosts kedalam widget ListViewdan GridView. Lalu, langkah selanjutnya adalah kita perlu ubah juga kode komentar berikut

Menjadi seperti berikut.

Fungsi dari kode diatas adalah untuk mengambil list url gambar dari SharedPreferences dan dimasukkan kedalam variable myPosts. Setelah itu, kita jalankan hot restart pada app-nya.

Buat widget untuk menampilkan gambar dari Firebase Storage

Buat Fitur Upload Gambar

Untuk fitur upload gambarnya kita bisa menambahkannya didalam icon kamera yang ada dibagian header app-nya. Silakan kita ubah kode komentar berikut

Menjadi seperti berikut.

Jadi, pada kode tersebut kita menggunakan plugin ImagePicker untuk mengambil gambar dari gallery dan kemudian kita upload gambar tersebut ke Firebase Storage dengan lokasi gambarnya berada didalam direktori image. Lalu, kita juga ada meng-listen setiap progress upload-nya sehingga kita bisa mengubah setState() -nya agar bisa menampilkan loading ketika upload sedang berjalan dan menampilkan snackbar ketika upload gagal atau berhasil. Kemudian, sebelum kita jalankan kode diatas kita juga perlu membuat fungsi berikut ya untuk menampilkan widget loading-nya.

Dan kita panggil fungsi tersebut didalam fungsi build.

Sekarang coba kita test fitur upload gambarnya.

Buat fitur upload foto ke Firebase Storage

Buat Fitur Hapus Gambar

Sekarang kita akan membuat fitur hapus gambar dari Firebase Storage. Silakan buka kembali file main.dart dan ubah kode komentar berikut.

Menjadi seperti berikut.

Kode diatas berfungsi untuk menghapus semua gambar dari Firebase Storage dengan cara kita for each setiap url gambar yang akan dihapus. Sekarang coba kita test fitur tersebut ya.

Kesimpulan

Jadi kesimpulannya adalah kita telah berhasil membuat aplikasi yang melakukan proses upload, menampilkan gambar dan hapus gambar dari Firebase Storage di Flutter. Dan diharapkan dengan adanya Firebase Storage ini kita yang terbatasnya resource infrastruktur backend untuk menyimpan file-file dari client side bisa menjadi lebih terbantu khususnya untuk mobile developer. Untuk kode lengkapnya dari contoh projek kali ini bisa dilihat di Github ya.

--

--