Thank you for your efforts into making this video! Really appreciate it!
@olwethupissot8 ай бұрын
Hey Philipp, I just wanted to express the Kotzilla team's gratitude for this incredible video! Your tutorial is super informative. Thanks so much also for sharing your experience with Koin😊.
@JeudryPeñaPeña7 ай бұрын
Best youtuber ive found, literally you cant set up complete kotlin kmp app, with most simple as posible
@skarloti8 ай бұрын
You are like the great Arnold! Impressed by the short presentation, but the top of the future of programming. 🎉
@skarloti8 ай бұрын
Your smile conveyed satisfaction at Kotlin's progress. It was an important part of the presentation.
@baguingi55897 ай бұрын
Damm, and here I was wasting time getting Voyager to work when this is already officially supported. Saved me a headache and some dev time, as always! Keep up the good work
@Fo0nT8 ай бұрын
Next video: Room for KMP
@dmytroberezhnyi7178 ай бұрын
CMP
@D-Gowda098 ай бұрын
Should I learn some IOS basics like we had in Android Basics before starting KMP? Does IOS have intents?, Broadcast?
@argahutama7 ай бұрын
Pretty straight forward. Thanks for your efforts!
@roshkaalex8 ай бұрын
Thank you Philipp! Still one question is. How to share one instance of viewmodel between compostable functions in nav graph? And how to pass arguments in viewmodel +koin
@ddaypunk8 ай бұрын
Given the vm is a part of the koin graph, wouldn't you just get it similarly in that nav composable with the same type? Koin would then provide the current instance if singleton.
@bitwise-dev7 ай бұрын
How about with SavedStateHandle? Is it straight forward SavedStateHandle() just like when we create ViewModel with SavedStateHandle in unit test? Thanks
@farhazulislam61016 ай бұрын
Hey Lackner, you defined koin module as single { } aka singleton, so every time if you try to inject via inject() or koinInject() in composables it will always get the same reference of ViewModel. You don't require to get it from the scope. koinInject will do that for yor.
@georgp.29908 ай бұрын
is this compatible with use of the decompose library, or would you not mix these two?
@arseniykucherenko49608 ай бұрын
But how to use this KMP view model in Swift (swift-ui or UIViewController) ?
@SyncImpl8 ай бұрын
Thank you for the helpful videos.
@maksym12668 ай бұрын
Why do you use a 'single' for ios but not a 'factory'?
@andrefilgueiras7 ай бұрын
Factory will generate a new instance for every call. Single will generate only one instance (Singleton)
@Revitalish8 ай бұрын
where is the vid you made on shared ViewModel in compose navigation in native android? i cant find it anywhere :(
@frank4pickerson8 ай бұрын
Wow! It's super easy to use CMP now because of this. At the last 3 minutes before end of video, you showed how to fetch the VM: composable("screenA") {val viewModel = koinViewModel().... But this doesn't work in printing Hello World! unless you fetch the VM before the composable block
@anudeepananth8 ай бұрын
Hey Phillip, is your paid course on KMM updated with these new libraries and developments in KMM?
@PhilippLackner8 ай бұрын
I just recorded some update videos this week, they'll be published in the next 7-10 days after they're edited :) There's a video that shows how to update the project to run on the latest Gradle with all the latest dependencies and there are videos about whether you should use CMP and Jetpack ViewModels. Those are not used in the course for good reason at this point which is all explained though.
@anudeepananth8 ай бұрын
@@PhilippLackner Just purchased your KMP course :)
@danineira28 ай бұрын
One question, do you recommend a MacBook air m3 16Gb to develop Apps with KMP? Is it enough to use Android Studio XCode with different emulators? Or it is worth jumping to the 18Gb macbook pro m3 pro. Thank you very much for your videos.
@MultiDeivas8 ай бұрын
Get a m2 with 32gb ram better. These development applications are ram hogs, especially with emulators.
@hafizmohd0138 ай бұрын
@Philipp can you share on how use pagination in composeApp Multiplatform. So far, cash app library however this library soon not will maintain.
@vladalexeev85298 ай бұрын
This video is right what I needed as I'm making KMP project with viewmodels and jetpack nav. For whatever reason my latest Android Studio doesn't show me preview in composable functions of KMP project, although ui tooling is in gradle.
@PhilippLackner8 ай бұрын
Preview for CMP is not supported in Android studio yet
@Kmg4038 ай бұрын
What I've done is make a preview file in the Android package and it holds all of the previews for all of my screens. They could be split to separate files, but I decided to do it this way and use the gallery view to look at specific ones.
@manojshivhare9378 ай бұрын
can you please suggest me any tutorial or post where i can find that how we can write business logic in shared file then we can generate .Framework file / .arr file to distribute into Android / iOS project to use that business logic separately.
@DenisGL928 ай бұрын
Like all your videos, this one is very interesting: thanks! But if we want to keep UI in Swift for iOS, how can we use these KMP ViewModels from Swift?
@hem98317 ай бұрын
Would this approach work when the UI is not shared? I mean: - XML/Compose on Android - swiftUI on iOS - bussines logic to be shared across both platform (including the view models) I’m trying to understand if a shared view model will work in this case.
@frank4pickerson8 ай бұрын
It's neat that live templates fills the funs. But why live template don't show for Android Studio on latest Macbook Pro. I am using experimental Android Studio- Canary?
@FahadAyaz8 ай бұрын
I think a lot of that was Gemeni and not live templates
@tch.7778 ай бұрын
Thank you, amazing like always ❤ Is there a way to create a shared koin vm that is attached to the current navigation graph like you showed it with hilt?
@jeet54018 ай бұрын
Really Helpful
@mahmoudaljorban5408 ай бұрын
Thanks for a great video :)
@jasmeetsingh-o8r8 ай бұрын
Hey Philip can u make a video regarding the new changes in the google signin using firebase ?
@andreaslinis15868 ай бұрын
Hello Philip, is it safe to use compose multiplatform for migration òf an already existing production android project to ios, or do you think it is not stable enough
@juandurini3098 ай бұрын
Compose Multiplatform is still in alpha, so thing might change in the future and that could lead to deprecations and big refactors in the future
@FahadAyaz8 ай бұрын
On the other hand Compose Multiplatform will generally align well with Jetpack Compose, so if you're using that, you're probably going to be fine (although might have to wait a bit for newer stuff to get merged in)
@andreaslinis15868 ай бұрын
@FahadAyaz compose multiplatform just went beta for ios !! That's great news
@pablovaldes60228 ай бұрын
Looking great already I wonder if disabling Activity re-creation when configuration changes(in the manifest), will make this easier and we wouldn't need to expect/actual ViewModel modules and classes.
@PhilippLackner8 ай бұрын
Then you'll break themes, language switching, landscape ui etc.
@pablovaldes60228 ай бұрын
Doesn't that get recomposed when the respective staticCompositionLocal gets updated, regardless of Activity recreation? The whole point of compose is being reactive
@ibrahimanimasahun94318 ай бұрын
@@pablovaldes6022 you're right
@superhumandose8 ай бұрын
Hey Phillip, can you do another updated Jetpack Crash course. There is literally very limited content on KZbin on that
@shelarsameer8 ай бұрын
Can I use this ViewModel without Compose Multiplatform? I want to do a similar implementation you did in your KMM course. Shared View Model with nativeUI.
@PhilippLackner8 ай бұрын
Yes
@Chirag-Redij388 ай бұрын
How to use viewmodel & koin injection with native SwiftUI.
@galaxiegalaxie50038 ай бұрын
Great content. Awesome. Now, how could we share the same viewmodel to different screen. Could you show us some insight.Thank you.
@safionweb8 ай бұрын
Have they merged KMP and CMP? I remember KMP was different where you had to use Swift for iOS-specific code. This tutorial is Compose Multiplatform but Phillip is saying KMP. So, maybe I missed something, is KMP and CMP the same thing now?
@osisuper988 ай бұрын
Will CMP work without KMP? CMP only means sharing your UI (Compose code in this case) among all platforms, the rest is KMP.
@safionweb8 ай бұрын
@@osisuper98 I thought KMP generates purely native apps for both iOS and Android as if they were using Android Studio and XCode respectively. And CMP generates non-native apps just like Flutter and ReactNative. If that is true, I don't think we can say that CMP = KMP + Shared UI.
@FahadAyaz8 ай бұрын
Compose Multiplatform is built on top of Kotlin Multiplatform. You can choose to share UI with CMP or not share UI and use each platform's native implementations. It's up to you to decide what works best for your project.
@safionweb8 ай бұрын
@@FahadAyaz Thanks.
@王琦-f3b8 ай бұрын
That is why I prefer flutterr. I mean I love kotlin and Jetpack Compose, but the KMP is pretty new, so the ecosystem is not ready for real production and you need to solve everything by youself.
@PhilippLackner8 ай бұрын
KMP is pretty ready, just Compose MP not yet
@rajvirsingh27418 ай бұрын
Can anyone help me out for my DSA preparation as I currently use kotlin for my Android dev and I am fluent in using kotlin, so should I use the same for my DSA preparation or should I go for Java or c++
@anton-koelbl-it-dozent8 ай бұрын
Why not haskell? I would try something new. But I am not ready to help you. Good luck. 🍧🌟
@anton-koelbl-it-dozent8 ай бұрын
Helpful info. This would be a nice 🌞addition to incorporate into your premium course "Building Industry-Level Multiplatform Apps With KMM" (could also be renamed KMM ---> KMP). Are any updates planned? Some policy would be useful to know.
@D-Gowda098 ай бұрын
Can't we use KMP in windows?
@PhilippLackner8 ай бұрын
Yes
@ddaypunk8 ай бұрын
In the KMP wizard he mentions at the start of the video, you can add the desktop flavor. That would run on Windows since JVM runs on Windows.
@grumpyshoe4 ай бұрын
Maybe I'm wrong but one thing to mention ist, that this ViewModel right now, only seems to work if you target iOS an android. It doesn't support e.g. tvOS. Did anyone find a solution for that?
@StyX_CharLEE7 ай бұрын
if you added dependency to commonMain you don't need to make it API to be available in other sourceSets
@events40898 ай бұрын
Bro please do a video on Room database for kmp
@joeybasile5457 ай бұрын
16:36 you was diggin wontcha
@_hudeifa238 ай бұрын
is compose multiplatform still alpha in ios side ?
@anton-koelbl-it-dozent8 ай бұрын
Hm, really quite difficult to find this information on the wide wide web. So might be easier to ask in a YT comment. Let me help you: I would say maybe. 🐣
@_hudeifa238 ай бұрын
@@anton-koelbl-it-dozent I guess sarcasm and dismissiveness are easier than actually trying to be helpful
@meidy37958 ай бұрын
Now it's beta
@laraibishtiaq26843 ай бұрын
I am still getting this error: Unresolved reference: ViewModel
@alevittoria7 ай бұрын
Great video as usual, but after this video, I think it will be a long time before KMM becomes better than Flutter. Too much code, in my opinion, to do easy things like initialize a vm.
@MonichGPT8 ай бұрын
Koin is not dependency injection! Koin is service locator!
@PhilippLackner8 ай бұрын
Dependency injection = passing objects to objects Exactly what's happening here in the VM's constructor ;)
@MonichGPT8 ай бұрын
@@PhilippLackner DI and SL it different patterns. Please read about it. You miss the point: DI is not passing objects, DI it is about getting objects and SL it is about taking objects.
@ddaypunk8 ай бұрын
@@MonichGPT You are arguing semantics here. Koin is listed on their site as a "DI Framework". It is an abstraction over the concept, telling you WHAT, but not HOW it is done.
@MonichGPT8 ай бұрын
@@ddaypunk Koin does not provide DI
@deviantstudio8 ай бұрын
who told you that lol? so injecting into the constructor is SL? something new here
@frank4pickerson8 ай бұрын
Running it on iOS after cloning, gives me the following: Duplicate Library Names: library_commonMain lifecycle-viewmodel_commonMain annotation_commonMain
@GeorgeRobinson-s8c3 ай бұрын
Quinton Throughway
@devgabriel68988 ай бұрын
Going nicely! But still too godamn complex. I will wait until they have something that does everything in this nice video automatically
@HowardCheatham-x1c3 ай бұрын
Graham Ports
@arozendojr8 ай бұрын
Suggestion, show how compose-ios works, compare with how React-native or Flutter works, write once and run on both emulators
@MonichGPT8 ай бұрын
You ever getting ViewModel by hands! This is not DI!!! It is not even verify the dependency graph!!!
@PhilippLackner8 ай бұрын
What bro
@JoseGibbs-v2r4 ай бұрын
Schmeler Knolls
@techzone20093 ай бұрын
We have to do lots of things for a simple job 😅.
@JustinRoubekas-u9t4 ай бұрын
Gleichner Common
@zachbearse26398 ай бұрын
Doesn't the singleton iOS ViewModel defeat the point? You're throwing away all the scoping apis that make this cross platform view model so useful in the first place.
@superkobke8 ай бұрын
Do you really need to have cringe thumbnails to capture your audience? That's so clickbait. I really like your videos man, but jesus, go one step up!!
@BeaufortIda-c8g4 ай бұрын
Bahringer Mountains
@BrittRuscher-y4p4 ай бұрын
Metz Vista
@DarrenHinderer8 ай бұрын
ko-in? lol why not pronounce like "coin"
@PhilippLackner8 ай бұрын
Koin = kotlin inject
@barfyman3Six28 ай бұрын
@@PhilippLackner It is pronounced "coin".
@Christopher59Lewis-e5i4 ай бұрын
Haag Heights
@KittyOdelia-w2z3 ай бұрын
Price Loaf
@mohegyux40728 ай бұрын
I reaaly hate viewmodels and these design patterns, I just use Object classes, lives forever and access it anywhere, I know it's "wrong" but it's easier for my tiny brain, I seperate concerns on my own and make single sources of truth on my own, all in singleton objects
@JeffreyLiu88 ай бұрын
Lives forever may have potential memory issue, and you would have to write specific code to cancel work for some screens based on requirements.
@mohegyux40728 ай бұрын
@@JeffreyLiu8 True, I do handle cancelling work , and I always use try catch just in case and log the errors to my backend. for me this makes sense esp. for simple apps and for one-dev apps
@PhilippLackner8 ай бұрын
One process death and your app will misbehave. Don't do that :D
@mohegyux40728 ай бұрын
@@PhilippLackner may be make a video "why we need viewmodels?"
@mohegyux40728 ай бұрын
@@PhilippLackner for example I have an object named 'ui' that contains some mutable state flows like "button1_visible" , "current_text" etc, why should I put them in a viewmodel and not in a simple singleton ?
@PengChenEynnzerr5 ай бұрын
Good... But in fact now we have org.koin.core.module.dsl.viewModelOf, org.koin.compose.KoinApplication and import org.koin.compose.viewmodel.koinViewModel, we can set up koin DI just in commonMain once for all, so actually there's no need to write platform-specific setup codes.