Seperti namanya, ini adalah semacam blok yang tidak biasa, dan kekhasannya adalah ia bekerja di Isolate terpisah (selanjutnya mengisolasi) dan tidak memperlambat UI Anda.
Apa masalah dengan blok reguler?
Selain boilerplate, ada satu masalah lagi - ini berfungsi di utas utama, sehingga tugas berat seperti parsing json dapat menyebabkan macet di UI.
Perpustakaan seperti simple_bloc atau cubit dapat membantu dengan masalah pertama. Dari kedua - mengisolasi, atau pembungkus di atasnya - Hitung. Pada prinsipnya, ini adalah kombinasi yang sangat bagus yang digunakan banyak orang, tetapi bahkan tidak menyelesaikan semua masalah. Misalnya, Anda tidak dapat bekerja dengan MethodChannel secara terpisah, dan, pada prinsipnya, penggunaannya dikaitkan dengan ketidaknyamanan dan pelat ketel.
Isolasikan blok
Pustaka ini membantu menggunakan pola BLoC dan menyelesaikan sejumlah tugas, seperti bekerja dengan isolate dan MessageChannels. Selain itu, ini memungkinkan Anda mengurangi jumlah kode saat menulis blok itu sendiri.
Bagaimana cara menggunakannya?
Untuk memahami cara bekerja dengan pustaka ini, mari kita lihat contoh sederhana.
Terlepas dari kenyataan bahwa lebih jauh saya mencoba menjelaskan semuanya secara rinci, ada sesuatu yang mungkin tetap tidak bisa dipahami, jadi diasumsikan bahwa Anda sudah terbiasa dengan pola BLoC.
Proyek flutter apa pun dimulai dengan penghitung, jadi kita akan mulai dengan itu juga. Langkah pertama adalah menulis blok itu sendiri.
Sejalan 3, kami membuat kelas CounterBloc yang mewarisi dari kelas IsolateBloc. Di sini kami menunjukkan jenis acara dan status blok kami.
Pada baris 4, kami meneruskan keadaan awal penghitung - 0.
Dari baris 6 hingga 9, kami menimpa metode onEventReceived, yang dipanggil saat acara baru diterima. Status adalah getter yang mengembalikan status terakhir yang dikirim blok ke UI.
Di baris 8, kami menggunakan fungsi emit, yang mengambil status dan mengirimkannya ke UI.
Sekarang Anda perlu mendaftarkan blok tersebut.
Karena ini bekerja dalam isolasi terpisah, kami tidak dapat langsung membuatnya. Oleh karena itu, Anda perlu memberi tahu perpustakaan tentang keberadaannya menggunakan fungsi register.
Di baris 5, kita menginisialisasi perpustakaan dan meneruskan fungsi yang akan berjalan di blok isolate dan register.
Pada baris 10, kami mendaftarkan CounterBloc - sekarang perpustakaan akan dapat membuatnya atas permintaan kami.
Tetap hanya untuk mendeskripsikan UI!
Pada baris 8, kami membuat blok dan menambahkannya ke pohon widget.
Pada baris 23, kami mendengarkan status blokir. IsolateBlocBuilder bekerja seperti StreamBuilder, tetapi dapat menemukan blok di pohon widget itu sendiri.
Dari baris 31 hingga 33, kami menggunakan metode ekstensi isolateBloc <Bloc, State> () untuk mendapatkan blok dari konteks dan menggunakan fungsi add () untuk menambahkan acara baru ke dalamnya.
Itu saja, sekarang Anda bisa mulai!
Akhir
Menggunakan contoh dasar, saya menunjukkan bagaimana bekerja dengan perpustakaan ini, dan untuk studi lebih lanjut saya menyarankan Anda untuk melihat halamannya di github . Semua fungsionalitas dijelaskan di sana dan ada contoh yang lebih kompleks.