narjes Mansoori
narjes Mansoori
خواندن ۲ دقیقه·۹ ماه پیش

آشنایی با Flow Builder در کاتلین

به طور خلاصه، چهار نوع سازنده‌ی اصلی برای ایجاد فلوها در کروتین وجود دارد که به شرح زیر است:

الف- ()flowOf: این نوع سازنده برای ایجاد یک فلو از مجموعه‌ای از آیتم‌ها استفاده می‌شود. به عبارت دیگر، شما می‌توانید یک فلو را با دادن مقادیر مختلف به عنوان ورودی به ()flowOf ایجاد کنید.

ب- ()asFlow: این تابع نوع تبدیل است که به شما کمک می‌کند یک داده را به فلو تبدیل کنید. به عنوان مثال، شما می‌توانید یک دنباله از اعداد را به عنوان ورودی به()asFlow بدهید و آن را به یک فلو تبدیل کنید.

ج- {}flow: این نوع سازنده فلوها را بر اساس یک بلاک کد تعریف می‌کند. با استفاده از این سازنده، شما می‌توانید فلوهایی را با قوانین خاص و کاربردهای مختلفی تعریف کنید.

د- {}channelFlow: این سازنده فلوها را با استفاده از تابع send ایجاد می‌کند که توسط خود سازنده ارائه می‌شود. با استفاده از این سازنده، می‌توانید قابلیت‌های پیچیده‌تری را برای فلوهای خود ایجاد کنید، مانند ارسال داده‌ها به صورت غیرهمزمان.حالا بیایید با استفاده از مثال‌ها نحوه‌ی ساخت فلوها با استفاده از سازنده‌های مختلف را ببینیم:

مثال ۱: استفاده از ()flowOf

fun main() {
flowOf(4, 2, 5, 1, 7)
.collect {
Log.d(TAG, it.toString())
}
}

خروجی:

output:
4
2
5
1
7

مثال ۲: استفاده از ()asFlow

fun main() {
(1..5).asFlow()
.collect {
Log.d(TAG, it.toString())
}
}

خروجی:

output:
1
2
3
4
5

مثال ۳: استفاده از {}flow

fun main() = runBlocking {
flow {
(0..10).forEach {
emit(it)
}
}
.collect {
Log.d(TAG, it.toString())
}
}

خروجی:

output:
0
1
2
3
4
5
6
7
8
9
10

مثال ۴: استفاده از {}channelFlow

fun main() = runBlocking {
channelFlow {
(0..10).forEach {
send(it)
}
}
.collect {
Log.d(TAG, it.toString())
}
}

خروجی:

output:
0
1
2
3
4
5
6
7
8
9
10

در این مثال‌ها، با استفاده از انواع مختلف سازنده‌های فلو، فلوهایی با مقادیر مختلف ایجاد شده‌اند و سپس مقادیر آن‌ها با استفاده از تابع collect چاپ شده‌اند.


collect tagcoroutineflowflowbuilderفلو
Android Developer
شاید از این پست‌ها خوشتان بیاید