No video

Build reactive mobile apps with Flutter (Google I/O '18)

  Рет қаралды 194,840

Google for Developers

Google for Developers

Күн бұрын

Do you over-react when you hear Streams, Observables, Redux, Flux? Don't. One of the advantages of Flutter is that it uses reactive views, which you can take to the next level by also applying reactive principles to your app’s data model. Through practical demonstration and live coding, learn patterns for crafting elegant and intuitive code and architecting maintainable apps.
Rate this session by signing-in on the I/O website here → goo.gl/aMJQE3
See all the sessions from Google I/O '18 → goo.gl/q1Tr8x
Watch more Android sessions from I/O '18 → goo.gl/R9L42F
Watch more Chrome sessions from I/O '18 → goo.gl/5fgXhX
Watch more Firebase sessions from I/O '18 → goo.gl/TQEeBQ
Watch more Google Cloud Platform from I/O '18 → goo.gl/qw2mR1
Watch more TensorFlow sessions from I/O '18 → goo.gl/GaAnBR
Subscribe to the Google Developers channel → goo.gl/mQyv5L
#io18 event: Google I/O 2018; re_ty: Publish; product: Flutter - General; fullname: Filip Hracek, Matt Sulliivan; event: Google I/O 2018;

Пікірлер: 190
@axmccx
@axmccx 6 жыл бұрын
That look they give each other at the start, "Let's do this!"
@lukejagodzinski
@lukejagodzinski 5 жыл бұрын
I'm really impressed with Flutter and what it can do but imho state management api is not easy to understand. Event speakers had problem explaining all the details of streams, sinks, controllers. I come from React development world and when I compare APIs, flutter's API looks like nightmare to learn and understand - especially bloc creation part. When I first read React article about state it was obvious after first reading, in Flutter I still don't get why API for creating bloc has to be so complex. I see that it's using several different packages instead unifying everything in one wrapper package with nice API. To be fair, I'm really impressed with Flutter and how easy it's to create beautiful UIs but I think it still requires some work to make it digestible for newcomers. Keep doing a great work!
@canerdemircigm
@canerdemircigm 5 жыл бұрын
I have made an app using setState() and now it is not enough because my app is going to more complex. There is a lot of state management approches. I'm confused. I hope this video will help me.
@TensorProgramming
@TensorProgramming 6 жыл бұрын
Very nice. Much cleaner then my state based tutorials on Scoped Model and Streams; naturally because it's the flutter team. I am glad this talk went very smoothly. Great Job Guys.
@jeffjose
@jeffjose 6 жыл бұрын
Your videos are amazing! Looking forward to more videos.
@TensorProgramming
@TensorProgramming 6 жыл бұрын
Thank you very much. They are all live coded so I do make mistakes but I am getting better at streamlining the process. I generally post 4-5 videos a week and I anticipate producing Flutter videos for the next few months at least. My channel covers a ton of different technologies and languages but I try to make a fairly large playlist of relevant information for each technology before moving to the next one. After a certain period of time, I come back to revise things and add more material. Thus far I have covered some Elixir, Go, Rust, Elm, Kotlin and Flutter with a few small videos on Clojure and ReasonML.
@filiphracek
@filiphracek 6 жыл бұрын
Thanks! I love your videos, please keep them coming.
@shibudevasia5685
@shibudevasia5685 6 жыл бұрын
Like your videos Tensor
@em3888
@em3888 6 жыл бұрын
Be honest, I like Tensor's voice more
@albertopolofernandez3472
@albertopolofernandez3472 6 жыл бұрын
I've only understood the hole flutter state management issue after seeing this video, very clarifying videos as usual. Great job!
@gilbertooliveira1351
@gilbertooliveira1351 3 жыл бұрын
Streams & Bloc starting at: 18:25
@operamini6
@operamini6 6 жыл бұрын
Coming from react native - react js development. This is what I'm looking for to handle state management on flutter. Awesome !
@PinePark0
@PinePark0 5 жыл бұрын
11:40 ScopeModel→InterheritedWidget and ScopedModelDescentdant (後裔) 11:59 Shopping Cart Structure 12:31 Layout & Implement ScopeModel Dont' forget 16:56 rebuildOnChange: false to prevent unnecessary render
@ManuLpz4
@ManuLpz4 5 жыл бұрын
Just use BLoC pattern lol
@andriidamm3538
@andriidamm3538 5 жыл бұрын
Finally I've got it! Watched many videos about the BLoC but got the idea behind it only after watching this video. Thanks guys, your are the best!
@mdtamjeed
@mdtamjeed 6 жыл бұрын
Flutter, Dart, Kotlin, Angular, PWA - where are we headed? Too early to comment, new frameworks always feel & look great unless it matures and there is a feedback from the community. On the contrary; with Dart being everywhere is promising sign. React was taking big strides in both Web and Native applications. VUE JS was a evolving so very well and it showed a lot of promise and results. Seriously; there should be a video to detail an adoption strategy (from Google). Being developers we tend to have hard time developing apps with so much happening around from the big houses. REST based server with Microservices is in full swing when it comes to server side coding. Both JAVA and JS have a very good echo system here. Google stack looked clean with Firebase (serverless) and Kotlin being made official lang for Android. Will try to come up with some article surrounding these frameworks, libraries and languages, from the Developers' perspective.
@FreeMusic54
@FreeMusic54 5 жыл бұрын
dude. do not worry. first of all: flutter is just a wrapper around different operating system SDKs (ios, android). that means: flutter is always going to need kotlin or something else. so if you are going to start writing a new app for both systems: go for flutter. if you want to develop also a website? go for angularDart. trust me. then you can share your dart code (services, classes, validations). but this is all client-side. how hard is it to get started in client side development? not very hard. so why worry? one week and you are in. and backend? well nothing changed there actually. you could write your backend code in java 20 years ago and you still can. maybe 1% of all developers need to worry about scaling their backend (because they work at google). the other 99% can write their backend in PHP if they want. it wont matter. just stick to that what makes most fun to you.
@youssefhenna7852
@youssefhenna7852 6 жыл бұрын
This was actually really helpful
@emmanuelamarh5988
@emmanuelamarh5988 5 жыл бұрын
I was so excited when I heard of the release of Flutter. It will do good even though it was just released , but I fell it will do well
@jamesperry4470
@jamesperry4470 3 жыл бұрын
I really like how flutter handles events with sinks and streams. Can't I / Shouldn't I implement the BLoC pattern when it is the most simple solution available to me using the 3rd party provider library? People often mention Provider as if it is a competitor with bloc, which confuses me.
@davidweiss5249
@davidweiss5249 5 жыл бұрын
This is an excellent discussion of state management/architecture options. Well done.
@raoufrahiche2828
@raoufrahiche2828 6 жыл бұрын
another great flutter talk
@richardmiho
@richardmiho 6 жыл бұрын
another great presentation on Flutter. Clear as, logical and easy to follow.
@DmitriyBlokhin
@DmitriyBlokhin 5 жыл бұрын
Great talk, streams & reactive pattern are very exciting!
@FreeMusic54
@FreeMusic54 5 жыл бұрын
when you realize that you always used the bloc pattern and now it gets a name......
@FidelGuajardo
@FidelGuajardo 5 жыл бұрын
Really liking Flutter state management!!!
@satishkumar-qq8df
@satishkumar-qq8df 5 жыл бұрын
Is it necessary to make the stream every time, its like we are creating a list of the variable every time. I want to make only on variable than how its possible?
@amugofjava
@amugofjava 6 жыл бұрын
Great talk! Helpful and fairly easy to follow.
@SteveHayles
@SteveHayles 5 жыл бұрын
Great presentation and nice to see a state management pattern in Flutter that doesn't rely on Redux. It feels over engineered and would benefit greatly from dependency injection done properly (which seems thin on the ground right now). One question I have around the BLOC pattern is how do you deal with the issue of having "initial state" being rendered before the observable updates ?
@filiphracek
@filiphracek 5 жыл бұрын
Using something like ValueObservable solves this. ValueObservable is coming soon to pkg:rxdart (github.com/ReactiveX/rxdart/pull/182).
@dmitriyobidin6049
@dmitriyobidin6049 6 жыл бұрын
Great talk, but... At the end of the day where are we going? Google added Kotlin as native language but at the same time wasting time on flutter? Which one is the right way?
@sshfishuser
@sshfishuser 5 жыл бұрын
Google added Kotlin just because google wants to leave java as soon as possible. Flutter is the future.
@Mzulfreaky
@Mzulfreaky 5 жыл бұрын
It's all just options and preference. More options is great
@iurysza
@iurysza 5 жыл бұрын
Both. Native Android wont suddenly disappear. Kotlin solve developer problems now. Flutter+Dart is just starting, but I see it as a pretty good solution for mobile in the near future. There are lots of people already trying to do something like that (state management, functional, reactive, MVI, etc) in the android community right now and most of this ideas translate seamlessly in flutter/dart.
@zeccy337
@zeccy337 5 жыл бұрын
Really great presentation. Besides the awesome content, i love how you guys presented it!
@sujiththycattussery
@sujiththycattussery 5 жыл бұрын
Why Google developers always use Mac?
@artursvancans9702
@artursvancans9702 4 жыл бұрын
Because of native bash support (although Windows is working hard on WSL) and consistency - if the whole team has Macbooks, then there wouldn't be much CPU/Architecture discrepancies. You could go for just a normal laptop with Linux installed, but Macbook just feels better.
@FidelGuajardo
@FidelGuajardo 5 жыл бұрын
Dart Streams look super nice!
@trietlamminh6780
@trietlamminh6780 5 жыл бұрын
So excited, let do it !!!!!!!!!!!!!!!!!!!!
@soumen81
@soumen81 5 жыл бұрын
Excellent content, excellent delivery...
@jamesscott3372
@jamesscott3372 6 жыл бұрын
Great talk. I have a question: I'd love to see how you wired the CartBloc into the CartProvider, because you pass CartBloc() as a param to the provider, but you get the CartBloc back when you call Provider.of(...). How would this look if you had multiple Blocs?
@filiphracek
@filiphracek 6 жыл бұрын
Great question. I recently wrote a companion article that tries to address some of those conundrums: medium.com/flutter-io/build-reactive-mobile-apps-in-flutter-companion-article-13950959e381
@fille.imgnry
@fille.imgnry 5 жыл бұрын
Coming from developing web apps using Vue.js, handling state in Flutter seems complicated. In Vue its as simple as having a globally accessible Store-component with a variable and then use that variable anywhere and mutate it from anywhere. No need for inherited widgets and different streams for input and output. So much simpler. Maybe this is not possible with Dart?
@michaelscofield2652
@michaelscofield2652 6 жыл бұрын
Really promising. Going to use this for sure.
@PS-cc3pz
@PS-cc3pz 3 жыл бұрын
Flutter UI development is all nice and good. Managing state is very confusing. If the variable is not in the widget scope why doesn't intellisense or compilation works?
@danialothman
@danialothman 3 жыл бұрын
wholesome talk
@em3888
@em3888 6 жыл бұрын
I have tough time trying to figure this out, since Mobx in React native kind of the same as this bloc thing. How about login and localization? Can I do end to end with just bloc???
@RaiderRides125
@RaiderRides125 3 жыл бұрын
i tried but i dont get it
@uday4816
@uday4816 6 жыл бұрын
Scoped Model - kzfaq.info/get/bejne/iLljacpzqtacf30.html . (Use a Data Model class, ScopedModelDescendent & notifyListeners(), set the rebuildOnChange flag to false to prevent unnecessary re-building, disadvantage-Need to remember which widget should not rebuildOnChange ) Streams - kzfaq.info/get/bejne/iLljacpzqtacf30.html (flutter has a StreamBuilder widget that has a builder which builds whenever there is a new value in the stream, Sink for input events, Stream for output to subscribers. Implementation - Sink is backed by a StreamController or BehaviourSubject (which has memory of the last value). To publish, you call the method on the Model that adds items to the Sink. To listen, you need to wrap the widget with a StreamBuilder and specify the stream it listens to. This is so that the StreamBuilder passes down any new data to it's child. Afterwards, merge the streams.
@brus11
@brus11 6 жыл бұрын
Hey, is there a source code from this presentation somewhere on GitHub? BTW, I loved that state management pattern using streams. Makes me re-think the whole application design and build on top of it. Thanks a lot!
@filiphracek
@filiphracek 6 жыл бұрын
Yes, here's the code: github.com/filiph/state_experiments
@brus11
@brus11 6 жыл бұрын
Found it: github.com/filiph/state_experiments
@JoeCodeswell
@JoeCodeswell 6 жыл бұрын
This is an EXCELLENT talk on the Google way to manage Flutter State. Thanks very much. Also, at about 14:00, what is the VS CODE plugin you are using to wrap the MaterialApp widget with the ScopedModel widget? Thanks again. Love and peace - Joe Dorocak
@JoeCodeswell
@JoeCodeswell 6 жыл бұрын
I found the answer to my question: 1. Select MaterialApp 2. L-click the "Show Fixes" Light Bulb. Thanks again for a GREAT talk. Love and peace - Joe
@filiphracek
@filiphracek 6 жыл бұрын
Yes, this is the Dart plugin itself. Thanks for the kind words!
@homeygdoggydogg
@homeygdoggydogg 6 жыл бұрын
In your example at the end where you show how changing the locale will give you the opportunity to change the USD to something else, isn't it much more likely that these changes will occur in another 'bloc' such as the 'SettingsBloc'? How then would you reference that SettingsBloc in your CartBloc? Is that possible?
@filiphracek
@filiphracek 6 жыл бұрын
The canonical way is to pipe relevant outputs of one bloc to inputs of the other. So your CartBloc would have an Input and your SettingsBloc would have an Output. This nicely decouples things, because that LocaleChange can come from other places than the SettingsBloc, and can flow elsewhere than to the CartBloc. Depending on how much you want to (over)engineer things, you can have an overarching app-level Bloc through which these inter-bloc streams go. This makes it even easier to decouple everything, especially in case the two blocs live in separate parts of your widget tree. They'll just go through the "boss". Hope that helps.
@homeygdoggydogg
@homeygdoggydogg 6 жыл бұрын
Filip Hráček it does! Thank you.
@Jj_jj434
@Jj_jj434 5 жыл бұрын
great talk, was wondering if there is an equivalent approach to state management in web dev (specifically with Vue.js) as opposed to the standard redux/ngrx/vuex/etc approach. if so, can anyone point me to some good resources for learning more ?
@rrabinovici
@rrabinovici 6 жыл бұрын
Thank - really great talk! Sorry about the silly question - but it's killing me :) - how do you do the magic of auto-inserting code when you type just Sink (at 24:20)?
@filiphracek
@filiphracek 6 жыл бұрын
This is IntelliJ's Live Templates. You can define your own: www.jetbrains.com/help/idea/using-live-templates.html
@rrabinovici
@rrabinovici 6 жыл бұрын
Thank you! You are the best!
@PraveenAV
@PraveenAV 6 жыл бұрын
Thank you team.
@MaballoNet
@MaballoNet 6 жыл бұрын
Very helpful. Thank you so much
@nathanpaludo7078
@nathanpaludo7078 6 жыл бұрын
Is there any way to use the stream data again? I have an object on a stream and I need to retrieve its data. I want to retrieve it so I won't need to instantiate a variable and a stream for it. I tried to use Stream.object.last.then() but I couldn't pass through its future's return with a stateless screen...
@nathanpaludo7078
@nathanpaludo7078 6 жыл бұрын
Oh I figured it out on my code! I instantiate an object inside my Stream which upgrades with the handlers and then made a function to return it, so if I need to use a quantity or a price in a if before the Stream component I can use it :)
@stockita
@stockita 6 жыл бұрын
Very nice work, thank you.
@nightlifeking
@nightlifeking 6 жыл бұрын
Just starting to get into app development, should I learn Flutter or Ionic?
@cowboy-alex
@cowboy-alex 6 жыл бұрын
Flutter.
@TensorProgramming
@TensorProgramming 6 жыл бұрын
Don't learn Ionic. Hybrid apps are a dying technology.
@SiphoNgwenya
@SiphoNgwenya 6 жыл бұрын
Flutter. I got started on Ionic but switching over to Flutter :)
@ukasztrojanowski3149
@ukasztrojanowski3149 6 жыл бұрын
Honestly. If you are just starting out, learn something which will make you emploayable. Flutter is a nishe within a nishe. You will still be better of learning kotlin to do android development or React Native, which has a much bigger market share.
@meghashyambhandary4191
@meghashyambhandary4191 6 жыл бұрын
React-Native
@Yuvraj622
@Yuvraj622 5 жыл бұрын
I have a flutter app that shows the list of video files from internal storage...now I want to display thumbnails of videos in video list so how can I do this in my flutter app? If anyone have any Idea then please help me. I am using ListBuilder widget.
@christianneilanthonywico9874
@christianneilanthonywico9874 5 жыл бұрын
Where can you get one of those Flutter shirts? Love Flutter, BTW :)
@MsKante
@MsKante 6 жыл бұрын
I don't like Flutter development patterns. It breaks encapsulation, why not create custom classes to hold data/states ?
@filiphracek
@filiphracek 6 жыл бұрын
Could you elaborate? Encapsulating data in separate classes is definitely a pattern that Flutter apps use, and we show some of it in the talk (Product, CartItem, Cart, etc.).
@MsKante
@MsKante 6 жыл бұрын
Sorry I didn't watch the entire video. I guess the code structure is throwing me off little bit.
@helioernestocuambe9592
@helioernestocuambe9592 5 жыл бұрын
Are you Planing to create a drag and drop ui Creator? that would be cool
@sarmadabdulrahman4272
@sarmadabdulrahman4272 4 жыл бұрын
Thanks for your effort
@erichalim
@erichalim 5 жыл бұрын
scopedmodel looks simpler to me while BLoC seems like overkill
@theGoldyMan
@theGoldyMan 6 жыл бұрын
super weird naming - Sink. I don't think this exist in rx. Why not full implementation of rx. this mixing of notions is so confusing
@Touseef
@Touseef 6 жыл бұрын
google is promoting 2 ways to develop android, flutter and kotlin and its confusing for me because I am a newbie in android and both of these seem promising.
@TheNiters
@TheNiters 6 жыл бұрын
I guess one of the differences is that Kotlin lets you make Android apps and Flutter lets you make cross-platform iOS+Android apps.
@Touseef
@Touseef 6 жыл бұрын
@NiteLite yes you are right, but my confusion is because of "Kotlin-Native" which is also a new project aims to let u create cross platform apps with kotlin
@LinJheYi
@LinJheYi 6 жыл бұрын
You can build cross-platform production level app for million users today with Flutter, but not with Kotlin/Native. However, with the future development of Kotlin/Native and Kotlin/JS, you can basically write Kotlin everywhere, mobile, web front-end, back-end, even desktop. It's not coming in the near future, but I bet it would happen in like 2-3 years.
@Touseef
@Touseef 6 жыл бұрын
what if I just want to write apps for android right now? ( because I cant afford ios store fee per year ) what should I choose then? is flutter still good enough for this scenario? I mean can it do all the things at OS api level which can be done with kotlin and android jetpack?
@soraneko8392
@soraneko8392 6 жыл бұрын
Kotlin was just an improvement upon Java and was good. But Dart and Flutter are going to be the industry standard and Google standard for Android apps in the years to come. As of now it's just another option.
@thusithaniroshan
@thusithaniroshan 5 жыл бұрын
18.24 for Streams 21.04 bloc patterns
@jungeunwoo6905
@jungeunwoo6905 6 жыл бұрын
Thanks for the nice video. Amazing!
@MrMatiux
@MrMatiux 6 жыл бұрын
Implementing the BLoC pattern, I do not understand what the CartProvider class is for. Can someone explain me? Thank you
@SoundbytesMusic
@SoundbytesMusic 5 жыл бұрын
The cart provider is the access point through which the widgets get the cart reference. cart = CartProvider.of(context). It is the flutter way to hand a resource down the widget tree.
@seccat
@seccat 5 жыл бұрын
FYI: Here is the file (never appeared in the video) github.com/filiph/state_experiments/blob/master/shared/lib/src/bloc/cart_provider.dart /// This is an InheritedWidget that wraps around [CartBloc]. Think about this /// as Scoped Model for that specific class. /// /// This merely solves the "passing reference down the tree" problem for us. /// You can solve this in other ways, like through dependency injection. /// /// Also note that this does not call [CartBloc.dispose]. If your app /// ever doesn't need to access the cart, you should make sure it's /// disposed of properly.
@chicagoboy279
@chicagoboy279 5 жыл бұрын
should I learn this or angular cordova
@barnabasbartha3507
@barnabasbartha3507 5 жыл бұрын
Definitely this
@NivenShah
@NivenShah 5 жыл бұрын
How does Matt get the menu that shows "Wrap with new widget" at 14:01 (kzfaq.info/get/bejne/iLljacpzqtacf30.html)? Is this a VS Code extension? Thanks :)
@NivenShah
@NivenShah 5 жыл бұрын
@@emilyfortuna2262 👍 thanks!
@westiti6650
@westiti6650 6 жыл бұрын
Why use Sink instead of a regular stream? What is the difference?
@filiphracek
@filiphracek 6 жыл бұрын
Sink is the receiving end of a Stream. You can't listen to a Sink, for example. It's a clear separation of concerns - Sinks are only for input, Streams only for output. api.dartlang.org/stable/1.24.3/dart-core/Sink-class.html You could, for example, use StreamController for both input and output, but that would give users of your API too much power. It would be the streaming equivalent of having a public, mutable field (instead of methods as inputs and getters/finals/immutables as outputs). Hope that helps. I was going to explain Sink in the talk but we figured we'd run out of time, so we dropped that part.
@westiti6650
@westiti6650 6 жыл бұрын
Thanks. That's really helpful
@smithshelke2036
@smithshelke2036 5 жыл бұрын
I really hate the fact that just to mutate state, something so basic and necessary in every single reactive app we have to use external libraries already, I mean its just too much effort for something so trivial and this might lead to spaghetti code in the longer run.Should have not chosen dart i think.
@tuatkiep9702
@tuatkiep9702 Жыл бұрын
thank you very much video
@AliSattarBarani
@AliSattarBarani 5 жыл бұрын
*This video is valuable. I really was surprized of the way of ScopeModelDecendant job in inherited widgets and it is one of the beautiful ways to create the inheritance among the widgets. I was wondering how to pass variable value among the widgets and here is a cool way which is exactly specified to do that.*
@samiullahkhawaja9972
@samiullahkhawaja9972 5 жыл бұрын
I think it's a nice framework.
@RumakInaph
@RumakInaph 6 жыл бұрын
What are some of the Google apps built using Flutter??
@filiphracek
@filiphracek 6 жыл бұрын
The two that are public knowledge are listed in flutter.io/showcase/.
@michelfeinstein
@michelfeinstein 5 жыл бұрын
I don't agree that converting the price (1.0) to a string ("1.00 USD") is business logic.... IMHO, the business data is 1.0, and how we present this to the user (be it "$1.00" or "1.00 USD" or something else) is presentation logic.
@SoundbytesMusic
@SoundbytesMusic 5 жыл бұрын
Keep in mind that this a very simple example app. In a real world scenario the switch from $ to € would involve different taxation, probably delivery from a different national branch of the company, with prices drawn from a another price list, differences in consumer rights laws to care about and so on. The Bloc pattern allows to change the entire app's behavior with the turn of a single switch. A differentiation between business and presentation logic would introduce yet another layer to worry about. This would go against the paradigm of separation of concerns.
@kingmanhusada824
@kingmanhusada824 4 жыл бұрын
I lost when they start talking about the streams
@petrushoc
@petrushoc 5 жыл бұрын
look like MVI pattern in android or cycle.js
6 жыл бұрын
What are the requirements to understand that talk? I am kinda lost
@filiphracek
@filiphracek 6 жыл бұрын
It would be very helpful to know where exactly we were losing you. It's very possible that we just failed to explain things in a clear way. That said, this talk is definitely for intermediate-to-advanced Flutter devs. There are at least 2 other great talks from this year's I/O that are much better in explaining the foundations of Flutter.
6 жыл бұрын
Thanks Filip, I will come back after learn more about flutter then.
@SKNPictures786
@SKNPictures786 6 жыл бұрын
It's amazing video...I like it
@WeiLiuhaha
@WeiLiuhaha 6 жыл бұрын
What is the editor you use to code? It's called 'Code'?
@zipzit2go
@zipzit2go 6 жыл бұрын
VS code. code.visualstudio.com/ free, open source, runs on any OS. very awesome tool..
@zeccy337
@zeccy337 5 жыл бұрын
I personally use intellij👌🏽
@mainelad
@mainelad 3 жыл бұрын
Filip uses Android Studio and Matt uses Visual Studio Code.
@matej0909
@matej0909 6 жыл бұрын
9/11 great presentation
@MuhammadFahreza
@MuhammadFahreza 6 жыл бұрын
What is the purpose of UnmodifiableListView if I used bloc_start pattern ? github.com/filiph/state_experiments/issues/5
@filiphracek
@filiphracek 6 жыл бұрын
Good question, replied on Github. The gist is: UnmodifiableListView is there for safety. It's immutable, so consumers of the Cartclass cannot change the items in the class via the Cart.items getter. They have to go through Cart.add() and Cart.remove() (which make sure to do the right thing).
@BestDealsFind
@BestDealsFind 6 жыл бұрын
Excellent
@bflmpsvz870
@bflmpsvz870 6 жыл бұрын
Outstanding
@funkiekeda
@funkiekeda 6 жыл бұрын
Very helpful, but having the source of this simple example would've been even more so.
@michaelchan1629
@michaelchan1629 5 жыл бұрын
Is there a repo to find the examples on this video? I'm interested in the custom widgets they have the the cartbutton with the badge. EDIT: Found it!!! github.com/filiph/state_experiments/tree/master/shared
@NileshKantak
@NileshKantak 6 жыл бұрын
O my GOD Great !
@matej0909
@matej0909 6 жыл бұрын
Is there code available from this presentation?
@filiphracek
@filiphracek 6 жыл бұрын
Sure: github.com/filiph/state_experiments
@nathanpaludo7078
@nathanpaludo7078 6 жыл бұрын
What's the best way to change data from product in CartAddition on this file? github.com/filiph/state_experiments/blob/master/shared/lib/src/bloc/cart_bloc.dart I'm trying to use Sink/Stream to update my components with listeners, but I got this problem... Should I use CartAddition again with a new Product or define a set for product?
@nathanpaludo7078
@nathanpaludo7078 6 жыл бұрын
pfff nevermind, I just realized I can create a sink for each field
@Keljfelgamer
@Keljfelgamer 6 жыл бұрын
I am a beginner, and I lost track. Could you upload a state, where you start coding in the video? Or could you recommend a tutorial, where I can see this or similar from the beginning?
@ibrahimragab2299
@ibrahimragab2299 6 жыл бұрын
How can I implement two-way binding using "Sinks and Streams"?
@MartykanT
@MartykanT 6 жыл бұрын
What are the advantages of Flutter over React Native?
@raoufrahiche2828
@raoufrahiche2828 6 жыл бұрын
native performance and beautiful ui
@TensorProgramming
@TensorProgramming 6 жыл бұрын
Flutter is actually Native where as React Native is only partially native (its basically a web browser that runs your react application). While flutter also runs on top of the native platforms and uses its own rendering engine, it still compiles everything down to native code which is a huge deal as far as performance goes. Flutter also has built in support for concurrency and distributed rendering. This means that it is much harder to write code that will slow down the performance of an application (or block the rendering of the UI) and it also means that you have access to good tools which can take care of these types of concerns (Dart Isolates for Expensive computation and first class stream support for state changes etc). If you are a react native developer, I highly recommend you take a look at Flutter.
@Zhuinden
@Zhuinden 6 жыл бұрын
>>> React Native is only partially native (its basically a web browser that runs your react application). Wat? React Native is translated to native UI components, it is not hybrid like Ionic/Cordova, AFAIK. Flutter on the other hand ditches native UI components entirely and draws itself out from its own realm of Dart code, so it's actually closer to Xamarin.Forms than it is to native app development.
@wmleler6163
@wmleler6163 6 жыл бұрын
The following article talks about the differences between Flutter and other systems, including React Native. "What's Revolutionary about Flutter" hackernoon.com/whats-revolutionary-about-flutter-946915b09514
@meghashyambhandary4191
@meghashyambhandary4191 6 жыл бұрын
Wrong... React Native is not a Cordova Framework to run in a webview, Code written in ReactNative uses native components. No DOM here.
@MrStyle9x
@MrStyle9x 6 жыл бұрын
lol "it's nothing but pretty, if you concern it's pretty"
@uday4816
@uday4816 6 жыл бұрын
Github link - github.com/filiph/state_experiments
@user-jw9yc5jw8m
@user-jw9yc5jw8m 6 жыл бұрын
awesome
@WarnerBosss
@WarnerBosss 5 жыл бұрын
it looks like even worse than js.
@suryaprakash-kq7np
@suryaprakash-kq7np 4 жыл бұрын
2020?
@RivenbladeS
@RivenbladeS 6 жыл бұрын
Redux Flux Flutter great Another Moba game?
@ebensakyi
@ebensakyi 6 жыл бұрын
Number 3
@totommmoto
@totommmoto 5 жыл бұрын
Great demo! Some additional links -> flutter.dev/docs/development/data-and-backend/state-mgmt/options
@yeilmusic
@yeilmusic 6 жыл бұрын
i will wiat 1 year more.
@sebasbad
@sebasbad 6 жыл бұрын
The code for this talk github.com/filiph/state_experiments
@dalu_
@dalu_ 4 жыл бұрын
Why is it posting my comments 4 times, @KZfaq?
@shubham5451
@shubham5451 6 жыл бұрын
check out *Flinty Rolls* a game built on MATERIAL DESIGN on PLAY STORE
@ibrahimragab2299
@ibrahimragab2299 6 жыл бұрын
Princes +1
@ravinkponjg
@ravinkponjg 6 жыл бұрын
1st view
@BestDealsFind
@BestDealsFind 6 жыл бұрын
5 view
@xpopcornx1747
@xpopcornx1747 6 жыл бұрын
The last thing we need are more frameworks. No good reason to use this over native android and iOS.
@SiddhantDubey
@SiddhantDubey 6 жыл бұрын
Write once, run anywhere. Besides flutter is integral for google's next os fuchsia. Plus flutter is native unlike react native
@PablofMorales
@PablofMorales 6 жыл бұрын
The only hell that exists is the one for those who use white background
@alexsolovyov3322
@alexsolovyov3322 6 жыл бұрын
man, it's our personal choice )) do not be mad about that
@loenkoff
@loenkoff 6 жыл бұрын
That is, for all the book publishers in history?))
@sshfishuser
@sshfishuser 5 жыл бұрын
LOL. You were actually writing this comment in the white background.
@VikramSinghVikroatwork
@VikramSinghVikroatwork 5 жыл бұрын
You lost me at Streams .
Keep it Simple, State: Architecture for Flutter Apps (DartConf 2018)
29:00
Google for Developers
Рет қаралды 186 М.
Pragmatic State Management in Flutter (Google I/O'19)
33:25
Flutter
Рет қаралды 450 М.
Чёрная ДЫРА 🕳️ | WICSUR #shorts
00:49
Бискас
Рет қаралды 6 МЛН
Before VS during the CONCERT 🔥 "Aliby" | Andra Gogan
00:13
Andra Gogan
Рет қаралды 10 МЛН
He bought this so I can drive too🥹😭 #tiktok #elsarca
00:22
Elsa Arca
Рет қаралды 13 МЛН
How to Kotlin - from the lead Kotlin language designer (Google I/O '18)
39:24
Google I/O 2009 - The Myth of the Genius Programmer
55:17
Google for Developers
Рет қаралды 1,1 МЛН
Moving Off React Native
20:50
Theo - t3․gg
Рет қаралды 189 М.
Using Firestore as a backend to your Flutter app
11:42
Google for Developers
Рет қаралды 524 М.
Code beautiful UI with Flutter and Material Design (Google I/O '18)
27:49
Google for Developers
Рет қаралды 298 М.
Flutter / AngularDart - Code sharing, better together (DartConf 2018)
26:36
Google for Developers
Рет қаралды 67 М.
Top 12 Flutter Tips & Tricks
9:32
Fireship
Рет қаралды 268 М.
I've been using Redis wrong this whole time...
20:53
Dreams of Code
Рет қаралды 354 М.
Чёрная ДЫРА 🕳️ | WICSUR #shorts
00:49
Бискас
Рет қаралды 6 МЛН