When, why, and how to multithread in Flutter

  Рет қаралды 62,748

Flutter

Flutter

2 жыл бұрын

Every Flutter application is powered by at least one Dart isolate, and every Dart isolate is powered by an event loop. Knowing how these fundamental parts of the Dart runtime operate is key to knowing when and where to multithread in Flutter. Learn both theory and application from two Dart and Flutter experts.
Speakers: Michael Thomsen, Michael Goderbauer
Watch more:
All Google I/O 2022 Sessions → goo.gle/IO22_AllSessions
Flutter at I/O 2022 playlist → goo.gle/IO22_Flutter
All Google I/O 2022 technical sessions → goo.gle/IO22_Sessions
Subscribe to Flutter! → goo.gle/FlutterYT
#GoogleIO

Пікірлер: 58
@tq_malhotra
@tq_malhotra 2 жыл бұрын
Please also post a tutorial for running background processes in Flutter.
@johnryan4928
@johnryan4928 2 жыл бұрын
For background processing on Android and iOS, we recommend the workmanager package: docs.flutter.dev/development/packages-and-plugins/happy-paths/recommended#background-processing-
@PaurakhSharma
@PaurakhSharma 2 жыл бұрын
@@johnryan4928 Sadly it doesn't work in the web.
@arifmaul1690
@arifmaul1690 2 жыл бұрын
Phone
@user-eh5wo8re3d
@user-eh5wo8re3d 2 жыл бұрын
I think videos like this should definitely mention the current limitations of flutter. In this case, that flutter on web can not make use of isolates at this moment. Since flutter 3 claims production readiness across all platforms, the intuitive notion a viewer of this video will take away, is that this works on all platforms. Simply hinting at the limitations here could save a lot of time and head scratching
@miksen
@miksen 2 жыл бұрын
Yes, unfortunately Flutter web doesn't currently support isolates. We'll get the documentation updated to make that a bit clearer.
@JaredHasson
@JaredHasson 2 жыл бұрын
Many of the Google I/O Flutter videos show off features that are only available for the original platforms. Flutter web, desktop, and linux, are not fully supported, no matter what the Flutter 3 claims are.
@michaelthomsen6857
@michaelthomsen6857 2 жыл бұрын
@@JaredHasson Isolates are supported on Android, iOS, Windows, Linux, macOS, and embedded. Yes, they are not supported on the web currently. We try our best to be as multi-platform as possible, but there are a lot of technology constraints that are beyond our control. I do agree though we could have done a better job mentioning the web limitation in this video. We'll try to take the feedback to heart for future content!
@dc5
@dc5 Жыл бұрын
Great video! Which of the 3 solutions would be the most appropriate for running dart on cloud run, allowing the most amount of concurrent calls on a single cloud run instance as possible?
@user-ge6yv3qi2n
@user-ge6yv3qi2n 8 ай бұрын
@@michaelthomsen6857is this even possible to run tasks in several threads on web? thought that there is JS limitations makes this never gonna happen in web
@charithahithaishi9844
@charithahithaishi9844 2 жыл бұрын
Nicely explain 👏🏻, thank you Flutter team.
@TreyHope
@TreyHope Жыл бұрын
Solid demonstration, thank you for sharing.
@hasansalim1868
@hasansalim1868 Жыл бұрын
a very useful topics explained in a clear and nice way
@amansingh.h716
@amansingh.h716 2 жыл бұрын
very good explanation
@fredgotpub871
@fredgotpub871 2 жыл бұрын
Very lear with good examples !
@HerrHafiz
@HerrHafiz Ай бұрын
very good explanation, thank you Flutter team.
@Raimkhodzhanov
@Raimkhodzhanov 2 жыл бұрын
Thank You! Very helpful and interesting content!
@flutterdev
@flutterdev Жыл бұрын
We appreciate the wonderful feedback, Raim! Glad to hear it's been helpful for you! Be sure to subscribe to stay updated on the latest with Flutter: goo.gle/FlutterYT 🙌
@in_staham
@in_staham 2 жыл бұрын
Thanks for the kind explanation. 👍🏼
@flutterdev
@flutterdev 2 жыл бұрын
It's our pleasure! Thank you for watching! 👍🏽
@heshansandeepa9471
@heshansandeepa9471 Жыл бұрын
Very nice
@scottgreen3703
@scottgreen3703 2 жыл бұрын
I hope you show us ho to change values in bottom navigation bar fromdiffren pages
@vasanthkorada4802
@vasanthkorada4802 2 жыл бұрын
Awesome
@iamawesomeheheh
@iamawesomeheheh Жыл бұрын
This is a very good topic and I appreciate the Flutter team for putting this out. While the explanations on the illustrations vs actual code by Michael Thomsen is digestable, the other one is not. 1. Illustrations by Michael Goderbauer is also good but when it comes to the actual code, it would be better for him to utilize the cursor so it shows the specific area of the code he is explaining 2. For him to show the before code and after codes that would be a good visualization of the changes 3. For him to make it more interactive like show his face in a thumbnail mode on the side while showing the code IDE and NOT just use the presentation decks I kept on pausing and running back and forth to understand the entirety of the code snippets. I hope they'll take this feedback constructively and improve it. Thanks again!
@kaustavchatterjee366
@kaustavchatterjee366 2 жыл бұрын
I thought I heard something about isolateGroups that will share memory, is that a thing?
@chondrosatriowibowo8391
@chondrosatriowibowo8391 2 жыл бұрын
Hello all, can i know how to download file on background processing?
@ozanmuyes
@ozanmuyes 2 жыл бұрын
The video is indeed informative (except for the mentioned things in other comments, like it doesn't work on web) but the contrast is too much for the colors and for the sound. Those make the video hard to follow.
@Joshua-dc4un
@Joshua-dc4un 2 жыл бұрын
Does it work on the web? Is it achieved using web workers
@lucasfrancelino5141
@lucasfrancelino5141 2 жыл бұрын
What about web?
@falkmuller232
@falkmuller232 2 жыл бұрын
Nice Video! However, AFAIK Isolates are not supported on the web, are they? I think that would make a fine addition.
@miksen
@miksen 2 жыл бұрын
Yes, unfortunately Flutter web doesn't currently support isolates. We'll get the documentation updated to make that a bit clearer.
@aytunch
@aytunch 2 жыл бұрын
Thanks for this. Is the "_entryPoint" at 11:51 supposed to be same with "isolateEntryPoint" at 13:05? Is it a typo?
@rixclock
@rixclock 9 ай бұрын
Is compute or Isolate available now in Flutter Web?
@user-hw6xm5fk2k
@user-hw6xm5fk2k Жыл бұрын
cool
@alanchae24
@alanchae24 2 жыл бұрын
is it possible using firestore (fetching, writing and so on) also with compute or another isolate ?? we’re building service using flutter & firebase that our backend functions heavily depend on firebase. so we wanna know it is possible or not. i searched and tried pretty much, but i havenot figured out how to do it!
@atoli1425
@atoli1425 2 жыл бұрын
From my testing that is not possible. Maybe you can offload the processing of the data to an isolate but not the fetch
@erde_gaming_
@erde_gaming_ 2 жыл бұрын
You can delegate the parsing to isolate, but that's all. (still better than nothing)
@alanchae24
@alanchae24 2 жыл бұрын
thanks for reply, guys!!
@huytruonghung4374
@huytruonghung4374 2 жыл бұрын
I think it's better to use isolate when you are working on a heavy CPU computational task such as image processing, parse large JSON, AI related task,... Networking doesn't require much CPU so normal async/await is suffice.
@fan23fan
@fan23fan 2 жыл бұрын
I guess that vm in vm thread stands for virtual machine. Or is it something else? Would be better if you clarified this part. What is it? What does it do?
@michaelthomsen6857
@michaelthomsen6857 2 жыл бұрын
That is correct. The work it does depends a bit on what format the Dart code is compiled to. When you AOT compile (flutter release builds and `dart compile exe`), the code is ready to execute but still needs a runtime environment to handle things like Dart memory management (garbage collection) and runtime type-checking for non-static types. When running in JIT mode (flutter debug/development builds), the VM further handles the interpretation of the code and JIT-compilation to native code.
@lesptitsoiseaux
@lesptitsoiseaux 2 жыл бұрын
In the 90s we had to deal with this too. Have fun kids!
@aytunch
@aytunch 2 жыл бұрын
on the line "final engine = GameEngine();" We are instantiating the game engine which we are already implementing (class ConcurrentGameEngine implements GameEngine). Isn't it already initialized and can't we access it by using 'this" or something? Please can you clarify this?
@teajay6545
@teajay6545 2 жыл бұрын
Implementing != initialization && instantiating != initializing. When you implement a class, you inherit its methods, which you then override and define its actions.(eg makeMove, reportMove) Instantiating means you get a new instance of the class which lets you access its methods/members = GameEngine(), now you can initialize final engine = GameEngine() instance, and access like so: engine.start() or you can use the instance GameEngine().start() this will make you create a new instance each time you want to access a new method, which may not be what you want. Hope this helps.
@aytunch
@aytunch 2 жыл бұрын
@@teajay6545 Yeah thanks. I was actually bothered by GameEngine() being initaited more than once. Maybe it should have been a Singleton?
@benjaminli21
@benjaminli21 2 жыл бұрын
Hmm... I have a super performance damaging issue. When you scroll on a list with a lot of images that contains a lot of color, there's a certain highly noticable lagging feel from scrolling. And from DartDevTool, I can tell it's because of the re-rendering or rendering of the images that cause trouble here. But is there a way to move the rendering of images using isolate?
@ffactory945
@ffactory945 2 жыл бұрын
Have you considered using a lazy list?
@benjaminli21
@benjaminli21 2 жыл бұрын
@@ffactory945 hmm... Well, I tried. But since there's no improvement, I don't think it's because of rendering all at once that cause the scrolling lagging.
@ffactory945
@ffactory945 2 жыл бұрын
@@benjaminli21 Are your images very high high resolution?
@benjaminli21
@benjaminli21 2 жыл бұрын
@@ffactory945 Yes. I supposed they are. Very beautiful images 😄
@ffactory945
@ffactory945 2 жыл бұрын
@@benjaminli21 high resolution on a mobile screen doesn't make a difference. Try to display a downsized version of the images instead. The image width should match the device width if possible, anything more is only noticeable when zooming.
@michasengotta2295
@michasengotta2295 2 жыл бұрын
Great idea to have a loud ringing sound in a KZbin video that purposefully comes out of nowhere.
@tobias6361
@tobias6361 2 жыл бұрын
How do I check if “code runs longer than the frame budget“?
@alibakhtiyari9216
@alibakhtiyari9216 2 жыл бұрын
you should run your app on profile mode
@UrgentSnooker
@UrgentSnooker 2 жыл бұрын
Hey that's a very interesting video but I have a question: why in your captions do you specify the pronouns for your guests? Don't you expect that it is obvious that people with masculine appearance and the name of Michael are obviously males using he/him pronouns? I'll appreciate your answer since I was recently offered to make similar video instructions in a software development company I'm working at and so I would like to know If it's a new industry practice that I should follow as well if we're targeting English-speaking audiences. Again, great video of yours, I'm following them closely as I advance in my Flutter developer career.
@andrewbrogdon558
@andrewbrogdon558 2 жыл бұрын
Great question! It's definitely something that's becoming more common, though I wouldn't say every English-language tech video includes them. My understanding of the reasoning is that different people use different pronouns (he, she, they, and so on), and it isn't always obvious from the way a person looks which one fits them best. Personally, I'm a two-hundred pound dude with a beard and vague smell of sawdust, so most people correctly guess "he/him" when speaking to me. By being explicit about my pronouns, though, I think it makes it easier for everyone else to be clear about theirs, and since it only takes a few seconds to include them, why not? :)
@michasengotta2295
@michasengotta2295 2 жыл бұрын
All of this is useless for web. Could've mentioned that.
@pawanjoshee
@pawanjoshee 2 жыл бұрын
Please hire a professional KZbin thumbnail designer first. It's boring...
Learn to use Isolates in Flutter | Simplified
10:28
CodeX
Рет қаралды 23 М.
What's new in Flutter
33:49
Flutter
Рет қаралды 133 М.
Little girl's dream of a giant teddy bear is about to come true #shorts
00:32
Red❤️+Green💚=
00:38
ISSEI / いっせい
Рет қаралды 83 МЛН
How Many Balloons Does It Take To Fly?
00:18
MrBeast
Рет қаралды 187 МЛН
아이스크림으로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 63 МЛН
Isolates and Event Loops - Flutter in Focus
5:48
Flutter
Рет қаралды 219 М.
Pragmatic State Management in Flutter (Google I/O'19)
33:25
Flutter
Рет қаралды 448 М.
Watching a Flutter app crash
12:24
Flutter
Рет қаралды 19 М.
Can a backend engineer learn Flutter with AI?
9:21
Google for Developers
Рет қаралды 8 М.
35 Flutter Tips That Will Change Your Life
10:53
Flutter Mapp
Рет қаралды 297 М.
Async/Await - Flutter in Focus
9:11
Flutter
Рет қаралды 204 М.
SAFE Multithreading with Mutex Locks
7:51
bvdl․io
Рет қаралды 2,8 М.
Featherweight Isolates in Flutter
15:22
Flutter Melbourne
Рет қаралды 7 М.
Samsung laughing on iPhone #techbyakram
0:12
Tech by Akram
Рет қаралды 4,4 МЛН
iPhone socket cleaning #Fixit
0:30
Tamar DB (mt)
Рет қаралды 16 МЛН
Самые крутые школьные гаджеты
0:49