More
Cara Mengoptimalkan Operasi Async di Flutter dengan Future.wait dan Back4app
7 mnt
pendahuluan pemrograman asinkron sangat penting dalam pengembangan aplikasi modern, terutama saat menangani tugas seperti mengambil data dari beberapa sumber atau melakukan beberapa permintaan jaringan namun, menangani beberapa panggilan asinkron secara efisien bisa menjadi tantangan di flutter, metode future wait menyediakan cara yang kuat untuk mengelola beberapa futures , memungkinkan aplikasi anda untuk menunggu beberapa operasi asinkron secara bersamaan dan efisien dalam tutorial ini, anda akan belajar bagaimana menggunakan future wait di flutter untuk mengoptimalkan kinerja aplikasi anda saat menangani beberapa tugas asinkron kami akan mengintegrasikan teknik ini dengan back4app, di mana anda dapat melakukan pengambilan data secara bersamaan dari backend anda, menyimpan hasilnya, dan secara signifikan mengurangi waktu tunggu bagi pengguna anda prasyarat untuk menyelesaikan tutorial ini, anda akan membutuhkan akun back4app daftar untuk akun gratis di back4app com https //www back4app com lingkungan pengembangan flutter yang sudah disiapkan di mesin lokal anda ikuti panduan instalasi flutter https //flutter dev/docs/get started/install jika anda belum menyiapkannya pengetahuan dasar tentang pemrograman asinkron di flutter dan cara menggunakan back4app sebagai layanan backend jika anda baru mengenal back4app, lihat panduan memulai dengan back4app https //www back4app com/docs/get started/welcome langkah 1 – menyiapkan backend back4app buat proyek back4app masuk ke akun back4app https //dashboard back4app com/ anda dan buat proyek baru buat kelas parse di proyek back4app anda, buat dua kelas parse baru bernama task dan project kelas task harus memiliki field name (string) dan completed (boolean) kelas project harus memiliki field title (string) dan description (string) tambahkan data contoh isi kelas kelas ini dengan data contoh yang akan kita ambil secara bersamaan menggunakan future wait di aplikasi flutter kita dapatkan kredensial back4app anda arahkan ke pengaturan proyek anda untuk mengambil application id dan client key anda, yang akan anda perlukan untuk menghubungkan aplikasi flutter anda ke back4app langkah 2 – menyiapkan proyek flutter anda buat proyek flutter baru buka terminal atau command prompt anda dan jalankan tambahkan dependensi buka pubspec yaml dan tambahkan dependensi berikut inisialisasi parse di aplikasi anda di lib/main dart , impor sdk parse dan inisialisasi di fungsi main anda const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); ganti 'your back4app app id' dan 'your back4app client key' dengan kredensial back4app anda yang sebenarnya langkah 3 – mengambil data secara bersamaan dengan future wait buat widget taskprojectscreen di lib/main dart , tambahkan widget baru yang akan mengambil data dari kedua task dan project secara bersamaan class taskprojectscreen extends statefulwidget { @override taskprojectscreenstate createstate() => taskprojectscreenstate(); } class taskprojectscreenstate extends state\<taskprojectscreen> { list\<parseobject>? tasks; list\<parseobject>? projects; string? errormessage; @override void initstate() { super initstate(); fetchdata(); } future\<void> fetchdata() async { try { // fetch tasks and projects concurrently final futures = \[ gettasks(), getprojects(), ]; final results = await future wait(futures); setstate(() { tasks = results\[0] as list\<parseobject>; projects = results\[1] as list\<parseobject>; }); } catch (e) { setstate(() { errormessage = e tostring(); }); } } future\<list\<parseobject>> gettasks() async { final query = querybuilder\<parseobject>(parseobject('task')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load tasks'); } } future\<list\<parseobject>> getprojects() async { final query = querybuilder\<parseobject>(parseobject('project')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load projects'); } } @override widget build(buildcontext context) { if (errormessage != null) { return center(child text('error $errormessage')); } if (tasks == null || projects == null) { return center(child circularprogressindicator()); } return listview( children \[ listtile(title text('tasks')), tasks! map((task) => listtile( title text(task get\<string>('name') ?? 'no name'), subtitle text('completed ${task get\<bool>('completed') ? 'yes' 'no'}'), )), listtile(title text('projects')), projects! map((project) => listtile( title text(project get\<string>('title') ?? 'no title'), subtitle text(project get\<string>('description') ?? 'no description'), )), ], ); } } widget ini mengambil tugas dan proyek secara bersamaan menggunakan future wait , mengurangi total waktu tunggu dengan menangani kedua permintaan secara bersamaan langkah 4 – menguji dan menjalankan aplikasi anda jalankan aplikasi anda menggunakan flutter run anda seharusnya melihat daftar tugas dan proyek yang ditampilkan di layar kedua dataset diambil secara bersamaan, membuat proses pengambilan data lebih cepat dan efisien kesimpulan dalam tutorial ini, anda belajar bagaimana menggunakan future wait untuk mengoptimalkan operasi asinkron dalam aplikasi flutter anda dengan mengambil data dari beberapa sumber secara bersamaan dan mengintegrasikan dengan back4app, anda membuat aplikasi anda lebih responsif dan mengurangi waktu tunggu keseluruhan bagi pengguna anda menggunakan future wait dalam kombinasi dengan backend yang kuat seperti back4app memungkinkan anda untuk mengelola beberapa tugas asinkron secara efisien dan meningkatkan kinerja aplikasi flutter anda untuk lebih jelasnya tentang menggunakan back4app dengan flutter, lihat dokumentasi back4app flutter https //www back4app com/docs/flutter/overview selamat coding!