I would like to say thank you for not only giving these great courses for free but also for your courses helping me to overcome the Imposter syndrome. When I watch your videos, I feel I can learn the topic. I appreciate that you are so positive and professional. Thank you so much!
Great introductory video, can't wait for the next! I like how you keep these videos chill but informative. You have been helping me a lot with my undergraduate thesis. Love from Greece
Philipp! You're amazing ! I'm jumping from video to video because what you are explaining is very interesting for me at this time - all the topics! Thank you very much! And thanks for your clear English - I'm Russian but there is no difficulties to understand you
1.3K+...Thanks Philipp... I went back to your TH-cam account because I know your explanation is very easy to understand than the one I was having in Udemy
How can you be notified about anything with flows when the documentation states that flows are cold: > Flows are cold streams similar to sequences - the code inside a flow builder does not run until the flow is collected. at 11:45: you say that the block is triggered when `emit` is called, but it the other way around!
Flow has changed quite a bit since i last used it a couple years ago. I don't remember SharedFlow and StateFlow being there (or maybe i wasn't aware at the time) but i read the docs a lot while using it so i don't think i missed it
thanks for your great videos. I used this. I wanted to reset it after it was 0 . I put it in Job(Coroutine) . in special condition I canceled the job. then try to call collect function again . but something weird happened. countdown timer digit was reset and was subtracted like 2 at a time instead of 1. it is like collect function is called two times and it is faster than usual to near 0.
Philipp, your content is the greatest! Why do you do an overview of new technology only? Many projects were created on Rx. Please make a comparison of this tool)
Hello Philip. I was working with xml. When I tried the code in this lesson, when I turned the screen sideways, it started counting down from 10 again. I wonder if flow is not lifecycle aware like livedata?
Is it possible to have like parametrized flow collections? Or flows are bound to only one..like..value? Say I have some parametrized fragment and I want to receive data, based on this parameter. Sooo...technically, I can use a ViewModel, but sheesh I will need to refresh my VM understanding. Will that VM be fragment scoped or singleton? I will look up in your videos an explanation of ViewModel. Because you make subjects so much easier!
I'm not sure if this still working fine in 2024. I try to do everything following what you're teaching but my code just get many red color on it. starting at setContent { KotlinFlowsTheme { and many red words after that. All of it seem to be "Unsolved reference" problem class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { KotlinFlowsTheme { val viewModel = viewModels() val time = viewModel.countDownFlow.collectAsState(initial = 10) Box(modifier = Modifier.fillMaxSize()) { Text( text = time.toString(), fontSize = 30.sp, modifier = modifier.align(Alignment.Center) ) } } } } }
Can you explain about delay function, collectLatest operator just work as we expected when the time of delay function inside collectFlow() function is bigger than the delay function in countDownValue
Can I convert the type of Flow that is returned by Room DB. Let's say I have a Flow that is returned by Room now I want to create a new Flow with type of Flow in my repository class. Is this possible?
I learned the coroutines from your channel, I knew about flows but still it was a good refreshment. Would you make a playlist about ktor and making backend server for apps to?
Using implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.4.0" like he did 8:53 val viewModel = viewModel() doesn't work import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.lifecycle.viewmodel.compose.viewModel class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val viewModel = viewModel() //error } } Please someone help
Would you also like me to make a video about unit testing flows?
@Philipp Lackner your videos are out of the world! Its really Helpful.. Thanks! Yes would Love to see the unit testing flows
Yes please Philipp! ❤️🙏🏻
Yes yes
Yes that would really be helpful
Yes please
From i know is Philipp only one of the best Native Android Devs who make Up to Date Tutorials and that with Kotlin.
So underrated.
Thanks bro!!
I would like to say thank you for not only giving these great courses for free but also for your courses helping me to overcome the Imposter syndrome. When I watch your videos, I feel I can learn the topic. I appreciate that you are so positive and professional. Thank you so much!
Your example helped me understand collect{} and collectLatest{}. You are a really good teacher.
I don't see any other android youtuber providing this level of content
Thanks a lot man!!
I already know this playlist will be fire 🔥🔥🔥🔥
Hell yes!
You are not the Teacher we want. You are the Teacher we need! 💖💖💖
Great introductory video, can't wait for the next! I like how you keep these videos chill but informative. You have been helping me a lot with my undergraduate thesis. Love from Greece
I guessed that this was how it worked, but it was real good to see it explained as plainly as you did. Thank you!
As always, well explained and quality content!
Philipp! You're amazing !
I'm jumping from video to video because what you are explaining is very interesting for me at this time - all the topics!
Thank you very much!
And thanks for your clear English - I'm Russian but there is no difficulties to understand you
Thank you for making these videos, they really help me better understand things.
Another great video Phillip keep up the good work , can't wait for part 2
best start for learn Flows..
Thanks philipp
1.3K+...Thanks Philipp... I went back to your TH-cam account because I know your explanation is very easy to understand than the one I was having in Udemy
Have a great explantion about the concept of Flow.
you always save me, keep up. Thanks Philipp 🙏
I don't know a very good English, but I understood that you explain in this video. Thanks!
It's a most desirable concept. I think flows will play crucial role in KMM.
They will!
Thanks, Phillip it's really helpful
Glad it was helpful!
How can you be notified about anything with flows when the documentation states that flows are cold:
> Flows are cold streams similar to sequences - the code inside a flow builder does not run until the flow is collected.
at 11:45: you say that the block is triggered when `emit` is called, but it the other way around!
Let's goooo! Thank you so much for this playlist!
You're welcome!!
Hope there will be unit tests for flows as well…it’s different…you can’t collect due to dispatcher mess…you need to test as a list…
Much needed lesson, Thank you..
Can you include a video comparing LiveData and Flow, in a developer perspective about implementations.
Edited
He's already done that. You can find it searching "StateFlow vs. Flow vs. SharedFlow vs. LiveData" on his channel
@@mouzinu Oh great, I missed that..
Great video. Waiting for the next video in the playlist. 😄😄
As long we have the flow started values by 10 inside the view model, why did we give .collectAstate(10) an initial value of 10 here?
+1 to that
I think we are setting initial value as 10 for the UI to show even before the actual flow starts to emit the values.
Thank you Philipp! nicely explained
Hello. Record Please Lessons on Services,
Broadcast Receivers,
Content Providers.
Great way of explanation on collect and colectLatest ...thanks man !!
Glad it was helpful!
What do you think about RxJava, RxKotlin, or RxAndroid philipp?
Haven't used RxKotlin or RxAndroid. RxJava is a great library, but I prefer flows because of coroutines
Hi, Philipp Lackner
Which dependency injection should we learn? Hilt, dagger 2, koin,...
which keyboard are you using? The sound of your keyboard is coming out so professional and I liked it :) share a link please :)
Flow has changed quite a bit since i last used it a couple years ago. I don't remember SharedFlow and StateFlow being there (or maybe i wasn't aware at the time) but i read the docs a lot while using it so i don't think i missed it
First of all, thank you so much for these amazing tutorials, Could you please also in the future include some Gradle tutorials
thanks for your great videos. I used this. I wanted to reset it after it was 0 . I put it in Job(Coroutine) . in special condition I canceled the job. then try to call collect function again . but something weird happened. countdown timer digit was reset and was subtracted like 2 at a time instead of 1. it is like collect function is called two times and it is faster than usual to near 0.
Great content mate
Awesome! Thank you! 🔥🔥🔥♥♥♥
Great , thanks
now it make sense.
Great video !🙏
Great video!
Philipp, your content is the greatest! Why do you do an overview of new technology only? Many projects were created on Rx. Please make a comparison of this tool)
Excellent lesson! Thanks a lot!
Glad you liked it!
Hello Philip. I was working with xml. When I tried the code in this lesson, when I turned the screen sideways, it started counting down from 10 again. I wonder if flow is not lifecycle aware like livedata?
Is it possible to have like parametrized flow collections? Or flows are bound to only one..like..value? Say I have some parametrized fragment and I want to receive data, based on this parameter. Sooo...technically, I can use a ViewModel, but sheesh I will need to refresh my VM understanding. Will that VM be fragment scoped or singleton? I will look up in your videos an explanation of ViewModel. Because you make subjects so much easier!
I'm not sure if this still working fine in 2024. I try to do everything following what you're teaching but my code just get many red color on it. starting at
setContent {
KotlinFlowsTheme {
and many red words after that. All of it seem to be "Unsolved reference" problem
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
KotlinFlowsTheme {
val viewModel = viewModels()
val time = viewModel.countDownFlow.collectAsState(initial = 10)
Box(modifier = Modifier.fillMaxSize()) {
Text(
text = time.toString(),
fontSize = 30.sp,
modifier = modifier.align(Alignment.Center)
)
}
}
}
}
}
Here: text= time.toString()
Replace: text = time.value.toString()
@@nguyenthanhcong8613 thanks, it's my bad I just create empty activity while I should create compose empty activity 🤣😂
Phillip, most awaited playlist, good luck, but we need more from you, will u made exoplayer customization playlist???? Please
Can you explain about delay function, collectLatest operator just work as we expected when the time of delay function inside collectFlow() function is bigger than the delay function in countDownValue
Can I convert the type of Flow that is returned by Room DB. Let's say I have a Flow that is returned by Room now I want to create a new Flow with type of Flow in my repository class. Is this possible?
Nice content. And also can you make more tutorials on Android with xml.
Thank you, can we use flow with services.
Very helpful
Would collectLatest fit well for debouncing?
I learned the coroutines from your channel, I knew about flows but still it was a good refreshment. Would you make a playlist about ktor and making backend server for apps to?
I got 2 very detailed courses on my website about that:
pl-coding.com/premium-courses
Hi can you please make some contents about livedata->flow? Thank you very much.
can we use kotlin flows without jetpack compose?
Great, thank you!
Dude your awesome
Thanks bro
Amazing
was learning it today again lol
Great playlist man !! Do cover flatMap nd flatMapMerge nd flatMapConcat operators , Theese are pretty confusing !!
Coming in the next one 👍
what exactly is emit ??
very helpful!
Really helpful
Glad it helped
YAAAAAAAAAAY THANK YOU!
You're welcome!
Thanks really usefull
Thank you!
You're welcome!
Just noticed you are from Germany ,which uses British english,
but you said zeee (while pronouncing z) - which is American English,
lol :)
Dayum!
why you collected flow in a coroutine , i did not get the reason
Collecting a flow is suspending and therefore has to be done in a coroutine
@@PhilippLackner thank you so much for replay man
@@rexitspersonal8353 I recommend to watch my coroutines Playlist first then before jumping into flows
@@PhilippLackner one more thing. we also collected flow in main activity as a state . which is not in coroutine
@@PhilippLackner yes
You are crazy!
Thanks!
First view, like and comment :)
🎉
3:18 Coroutine with Channel can do this 😶🌫️
Easy 🌺👌✨☺️🙏
what is that? -> KotlinFlowsTheme
Pls make some real use of flow in your project that actually utilize flow rather than mimicking😮 it like video streaming app using flow.
what i have to do if i am not using compose and i want to show this changes value in textView in Activity?
@Philipp Lackner
Using implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.4.0" like he did
8:53 val viewModel = viewModel() doesn't work
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.viewmodel.compose.viewModel
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val viewModel = viewModel() //error
}
}
Please someone help
solution:
use implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.4.0"
@@jhNic thanks!