-
-
Notifications
You must be signed in to change notification settings - Fork 514
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Response to provider scalability. #103
Comments
Thanks for your detailed answer! I'm not sure how the lack of complex example using it or that Google isn't its author has any impact on scalability. But I'll try to answer as much as I can.
I apologize for that. I plan on correcting that with the upcoming release of v3 and an article I'm working on.
While I do not represent Google in any way, I suppose that we have a relationship based on trust. Google was committed to making their version of
It does and is in fact very strict about it – especially with the new version that should be released relatively soon. The release will be accompanied by an article that explains this further, but TL;DR,
If your app does not have all of these, then you ejected
|
I agree with everything you said. One last thing. It might be too much to ask, but could you try to make any best practices developed by the analytics team in regards to provider and reusing code with AngularDart public? And if they're still using BLoC's the way that they were introduced, just now with provider, then there is still the single-frame isssue It would be useful to know, how they are dealing with that. I don't see a way how that issue can be cleanly solved with the current state of Streams and have a way to share code between flutter and angular. Do you agree with me on that observation? Thank you. |
That's a situation where one might want to use But I'd argue that |
I wrote this response under the assumption that your intent was, besides developing this package, showing the community a better way to develop flutter applications (and solving common problems that occur while one is learning flutter) There are many culprits that can easily be avoided and to make flutter flourish around new developers imho they have to be eliminated as much as possible. Taking that out of the way, I also believe provider is the best way of passing data to subtrees. Thank you for your work and I'll make sure to check out v3. |
This started out as an E-mail and a response to this
Hey Remi,
Firstly, I admit that my response, especially around your package provider, may have sounded a little derogatory. That's not what I meant to do. I highly value your work, I've seen the contributions you have made (and are trying to push forward) and I am completely on your side.
Let me give you my concerns (in no particular order) from the perspective of someone evaluating provider for the use as a state management solution.
#65 I believe, no.
No, it is a community package, one wouldn't want to bet his services future success on the contributions of a single person. contributors
No, it probably isn't even 'provider's responsibility. But if it can do that, it has to be proven by providing examples on how to do that.
To be more concrete, here is a real-world example:
Your entities are:
(insert network handling if not complex enough)
(insert storage if not complex enough)
This logic should be independent of Flutter and the UI shouldn't concern itself with the details but only present data. How can a beginner quickly achieve that with flutter? The answer is easy if he is willing to break one of the fundamental principles of software engineering.
I'll elaborate more on that if requested.
--
I admit that I could be asking for too much, good architecture is only achieved with great craftsmanship. But flutter should instill confidence by showing that at least its team has figured this problem out.
I spent the vast majority of the last 16 months constantly refactoring my app as it grew (as a rough metric, to a 100KLOC). I put trust into the best practices of early 2018 of using setState (that was a bad decision). I moved onto bloc's, and it quickly became evident that they are too verbose (which was recently solved by flutter_hooks) but the single-frame issue still is a problem.
I confidently used RxDart but some bugs made it impossible to treat Observables as a Monoidal structure (and these bugs are not present in RxJS).
I'm currently happy with where I'm at and I have roughly described my solution in the first link but it shouldn't have taken me that long. There are proven best practices for all established frameworks but flutter is lazily avoiding that problem by telling its users they are free to use what they want. That might be acceptable but it is not ok.
--
What do the biggest non-trivial open source flutter apps put at the center of their app:
InKino Redux
Openbook Nothing. InheritedWidgets and a mostly flutter independent service provider.
Kalium Event Bus!
I don't want to offend anyone but there is a reason they do that. Mainly because of established software engineering practices that start to make sense once the app grows beyond a certain size.
I hope my concerns have been stated clearly this time. Please let me know if I'm wrong. I don't have all the answers and am more than willing to admit if I am wrong.
The text was updated successfully, but these errors were encountered: