Less code: Composable functions - MAD Skills

  Рет қаралды 101,013

Android Developers

Android Developers

Күн бұрын

Пікірлер: 49
@AndroidDevelopers
@AndroidDevelopers 2 жыл бұрын
Subscribe for the latest → goo.gle/AndroidDevs
@noctislucispacis6082
@noctislucispacis6082 2 жыл бұрын
I suggest make a Built in Gcam any Device also USB Debugger putting in the setting not a Developers Option Add Thermal Heat monitor Android update repair systems App Built in
@SufianBabri
@SufianBabri 4 ай бұрын
I'm learning Jetpack Compose after 3 years with React JS and React Native. I thought my 7 years of native Android development experience was to be scrapped but these videos are super cool and the Compose framework seems like fun!
@codekaksha1815
@codekaksha1815 9 ай бұрын
Summary: 1. Composable functions are immutable. You can not get any reference to them to change their state later. 2. They should be fast and free of any side effects. 3. Composables are idempotent. 4. They transform state into Ui. That means they are entirely dependent on the properties they are passed. 5. Recomposition happens when a composable is called with a new value of arguments. 6. But it can also happen when internal state in a function changes. 7. MutableState - any changes in the state of this variable will automatically tell its composable to schedule the recomposition. 8. remember - guarantees that the value is not reset when the composable is reset. 9. rememberSaveable - guarantees that the value is not reset when the config changes. 10. In order to remain side-effect free, composable functions should not write to any variable from outside of their scope. 11. Composables can run in parallel. They can run in any order. 12. Recomposition re-draws only that part of UI where state is changed. It skips as much as possible. 13. Recomposition is optimistic. It expects to complete the drawing before the next state change. But even if the next state change happens early, it cancels the current drawing. 14. In cases such as animation, composables might run frequently.
@LabGecko
@LabGecko Жыл бұрын
Thanks much for this series! I'd like to make one caveat on the _"No more XML needed"_ comment. XML isn't the issue. It's how Android Studio propagates XML details, with massively cascading properties that end up conflicting that is the problem. Here's hoping that didn't jump over into Compose. Thanks again for the tutorials!
@vintagewander
@vintagewander 3 ай бұрын
I'm glad that all UI frameworks across web desktop and mobile now all lookalike, we now can spend less time learning more time building
@jatinsingalEARCS
@jatinsingalEARCS 2 жыл бұрын
Android Developers never fail to impress
@KUROSAKI_jp
@KUROSAKI_jp 2 жыл бұрын
I just wanna learn even more now- it looks so cool o.O
@luisdavidorellana
@luisdavidorellana 2 жыл бұрын
Muchas gracias por la información, que nos proporcionan es de gran ayuda. Un gran abrazo a todo el equipo de android 🤗
@vardan.sargsyan
@vardan.sargsyan 2 жыл бұрын
Awesome!!! Thanks for the info ❤
@efimovalex814
@efimovalex814 Жыл бұрын
1:06 That seems counterintuitive that answers,forEach { // ... } will add SurveryAnswer composables to parent composable - Column Because answers,forEach { // ... } returns Unit It makes more sense to use answers,map { // ... } but it won't work, because SurveryAnswer composable returns Unit type It would be great if you would make series about Jetpack Compose internal implementation so we could understand why it works.
@s.k.studios9887
@s.k.studios9887 2 жыл бұрын
Thank you man for sharing this stuff
@AndroidDevelopers
@AndroidDevelopers 2 жыл бұрын
It's certainly our pleasure! We've also gone ahead and linked you some great resources below to help you on your Compose journey 😊 Composable Functions Reference → goo.gle/3BV8wbF Jetpack Compose Tutorial → goo.gle/3rhnns4 Best Practices for Jetpack Compose → goo.gle/3St5ySU
@bobby9568
@bobby9568 2 жыл бұрын
Very helpful
@AndroidDevelopers
@AndroidDevelopers 2 жыл бұрын
We're glad that the tutorial was helpful for you, Bobby. You can also check out the Compose Learning Pathways resource here: goo.gle/compose-pathway 😁
@AmiraAl-Samawi
@AmiraAl-Samawi 9 ай бұрын
Great video. I have a question 5:43 .How does onAnswerSelected relate to or triggered with the onClick of the RadioButton?
@firaszuriekat8341
@firaszuriekat8341 2 жыл бұрын
Awesome for sure! Is Answer a built in class or user defined? I mean upon toggling a radio button, is the object updated is an instance of Answer?
@chrisarriola3578
@chrisarriola3578 2 жыл бұрын
Hey Firas! The Answer class is user defined and has properties `text` and `image`, it can have other properties as well but that's irrelevant for this lesson. The implementation is left out in this video though the behavior would be the same for any other user defined class.
@SoulReaperDan1
@SoulReaperDan1 2 жыл бұрын
this is 🔥🔥
@BurgerParty
@BurgerParty 2 жыл бұрын
Add display resolution change like 720p 1080p toggle for support devices and allow all windows to be resizable and free formed by default
@ShadyAlAngham
@ShadyAlAngham 2 жыл бұрын
Un video maravilloso, valioso, importante, exitoso y útil, bendiga su esfuerzo y que Dios lo recompense con la mejor recompensa, mis saludos, mi cariño y mi gran aprecio.🖒❤🍀🖒
@heytemboumaza6369
@heytemboumaza6369 2 жыл бұрын
I can't wait to put my hands on this baby !!!!
@jg-jsbg4725
@jg-jsbg4725 2 жыл бұрын
LESS CODE : COMPOSTABLE FUNCTIONS - MAD SKILLS
@samstoyroom
@samstoyroom 2 жыл бұрын
In 6:18, I think the "selectedAnswer" should be var instead of val, right?
@chrisarriola3578
@chrisarriola3578 2 жыл бұрын
Good catch - yes you are right, that should be a var.
@PedroDelaCruz-n4c
@PedroDelaCruz-n4c 9 ай бұрын
😎😎
@StanleyMasinde
@StanleyMasinde 2 жыл бұрын
Jetpack is very promising
@AndroidDevelopers
@AndroidDevelopers 2 жыл бұрын
Absolutely! Jetpack Compose is like a bright star, shining brighter each day 🌟 If you'd like to learn more, we've linked an amazing playlist here: goo.gle/Jetpack-Compose
@jopadjr
@jopadjr 2 жыл бұрын
412th...Thanks Chris
@siva_subramaniam
@siva_subramaniam 2 жыл бұрын
bm - 2:15
@thomasscheer423
@thomasscheer423 5 ай бұрын
um.... what?
@LuckyFortunes-b3q
@LuckyFortunes-b3q 2 ай бұрын
looks overly complicated.
@smonkey001
@smonkey001 2 жыл бұрын
The MutableState's auto-re-render mechanic is very interesting, I wonder how they implement it. Where can I read more on this without a deep dive of the source code please anyone?
@ahmedmourad1683
@ahmedmourad1683 2 жыл бұрын
I'm very interested in this as well
@l_a_h797
@l_a_h797 4 ай бұрын
This video is informative, but sometimes inconsistent and confusing with its use of terms. For example, they say "composables" refers to composable functions. But when they're talking about something being "immutable," it seems that they're actually talking about objects (such as UI elements) created by the functions. Another example: The statement "Composables are (or should be) free of side effects" is false when taken at face value: The purpose of composable functions is to create UI elements (a side effect). They do not **return** these UI elements, as their return type is Unit. Without the side effect of creating a UI element, composables are pointless. Apparently they mean "free of other side effects." OK, fine, but if they're going to use technical terms like "free of side effects," they should use them accurately, because understanding how a complex framework works is hard enough without having to figure out when the experts don't mean what they're saying. Moreover, modifying a local variable within a function would not normally be considered a side effect of the function; but in Compose you're supposed to avoid that too. Once you open that door, other problems arise, like "How can I do a for loop without changing a local variable?" (Kotlin does loops in a more functional way than Java, so you technically aren't changing a local variable, but normally you don't notice the difference.) Once you hear that composables might not be called in the order you expect, you have to ask, "How do I make sure the SurveyAnswers will be displayed in the right order?" And then, "If the lines in my code aren't necessarily called in the order I expect, how can I use Kotlin control flow in any predictable way?" No doubt there are answers to these questions, but it seems like the video is oversimplifying in a way that is just confusing.
@SufianBabri
@SufianBabri 4 ай бұрын
By "side-effect free" they mean that a composable function shouldn't change the state outside (e.g. if you change variables outside the composable, it is wrong!). This is a core concept of functional programming, which Google seems to have used in the Jetpack Compose. "How can I do a for loop without changing a local variable?" The core idea is not to store state in a variable like you'd otherwise do in Kotlin. For storing state, they have suggested other ways in this video as well (e.g. MutableState, remember and rememberSaveable). "How do I make sure the SurveyAnswers will be displayed in the right order?" Composables can be called in any order, but each individual composable (e.g. SingleChoiceQuestion) will decide how it populates its children. You are confusing two separate things.
@LuckyFortunes-b3q
@LuckyFortunes-b3q 2 ай бұрын
They made this far more complicated than it needs to be throwing around too many spices and extra junk. Swift is far easier than this. Nothing is kept simple.
@SufianBabri
@SufianBabri 2 ай бұрын
@@LuckyFortunes-b3q do you mean swift ui? How come it doesn't need caching a view/composable/component? AFAIK, it is the ugly side of all these Declarative UI approaches.
@LuckyFortunes-b3q
@LuckyFortunes-b3q 2 ай бұрын
@@SufianBabri In swift I only need a NavigationView and navigation link to change between screens, while in Android theres far too much code.
@damarisgarcia7519
@damarisgarcia7519 9 ай бұрын
Agregauncomentrio
@amponsahhubert4884
@amponsahhubert4884 2 жыл бұрын
Compose makes development simple but the performance is not helping. It doesn't give me the native feel.
@LuckyFortunes-b3q
@LuckyFortunes-b3q 2 ай бұрын
Im thinking of making my own GUI crossplatform code with C++ and vulkan because I'm fed up with corporations changing their language and codebase nonstop for simple things.
@imin83gmail
@imin83gmail 2 жыл бұрын
I want to like this video, but the current like count 444 looks beautiful enough for me not to like this video 😆
@AndroidDevelopers
@AndroidDevelopers 2 жыл бұрын
We're so glad you enjoyed the video, Abdul! Thanks for watching 😎 To further hone your MAD Skills, feel free to scope out the Composable Functions resource we linked below: goo.gle/3r7snQ1
@kingsleygarrison4758
@kingsleygarrison4758 2 жыл бұрын
This is basically React and virtual dom
@moritz_p
@moritz_p 2 жыл бұрын
Yes and no. It's the same declarative concept, just for Android. What makes this great as well is that it's native, modern and more seamless in comparison to React Native. Also you don't have CSS but all layout and styling is done in compose itself and you can customize it however you like. Just like you saw the Row composable that puts it's children into a row, you could write your own custom reusable layout that arranges items in a circle, all without ever leaving Kotlin or writing XML. It's also very easy to make this very efficient in terms of performance. I'm a big fan of React on the web but I find that the platform is sometimes limiting. I would highly suggest trying out the Compose codelabs, it is pretty cool!
@kingsleygarrison4758
@kingsleygarrison4758 2 жыл бұрын
@@moritz_p I just meant conceptually
@TechnicalAkshay
@TechnicalAkshay Жыл бұрын
i m 678th liker
Powerful: Compose toolkit - MAD Skills
9:41
Android Developers
Рет қаралды 54 М.
ViewModels & Configuration Changes - Android Basics 2023
18:46
Philipp Lackner
Рет қаралды 145 М.
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН
Is your function REALLY a Vue composable?
10:53
Alexander Lichter
Рет қаралды 14 М.
Compilers, How They Work, And Writing Them From Scratch
23:53
Adam McDaniel (kiwi)
Рет қаралды 248 М.
Constraints and modifier order - MAD Skills
12:23
Android Developers
Рет қаралды 36 М.
Inline Functions: inline, crossinline, and noinline
11:59
Dave Leeds
Рет қаралды 8 М.
Fundamentals of Compose Layouts and Modifiers - MAD Skills
11:56
Android Developers
Рет қаралды 109 М.
THIS Compose-State Mistake Leads to Problems In Your Code
7:58
Philipp Lackner
Рет қаралды 48 М.
MVVM vs. MVI - Understand the Difference Once and for All
18:40
Philipp Lackner
Рет қаралды 59 М.
Writing Code That Runs FAST on a GPU
15:32
Low Level
Рет қаралды 582 М.
Hilt and dependency injection - MAD Skills
13:06
Android Developers
Рет қаралды 49 М.
derivedStateOf VS. remember(key) - THIS is Really the Difference 🤯
14:46
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН