Jow Forums won't stop shitting on Flutter

>Jow Forums won't stop shitting on Flutter
>it's genuinely great and most job offers hit six figures already

Attached: Bowie hmmm.jpg (950x534, 117K)

Other urls found in this thread:

flutter.dev/docs/get-started/install
flutter.github.io/samples/
youtube.com/watch?v=ON0A1dsQOV0
twitter.com/NSFWRedditImage

Shitting on what?

the designated

Attached: flutter.png (1600x800, 175K)

how long will this one last

I would never shit on it. Learning Dart and Flutter was easy and fast and so was making an app with it for both iOS and Android.
I've made Android and iOS apps with the native toolkit before, in a Team even, and it always ended up a mess, because State handling, which is the most important thing in any application, is a mess. Global State everywhere, state living in View Controllers, implicit dependencies, state duplication because the Controls keep their own state...
In Flutter, with RXDart, BLoC and Streambuilder, it was stupidly easy to get everything to work exactly as it should. I freaking love it so much, I can no longer even imagine doing UI the imperative way.

I just don't like that they're now trying to make it a universal platform that works on desktop too and the web, and the fucking Raspberry Pi for some reason. Why would they do that? They should focus on what the platform already does really well. The iOS side still needs some work, those CupertinoPageRoute transitions have totally wrong curves / timings in their animation and the implementations are so rigid that the only way to fix it is to either have a local fork of Flutter or to maintain a fixed copy of all navigation related classes in your project, which is awful.

Also, Flutter on the Web - Good god. Sure, the DOM sucks for applications, but so does sending 2MB of compiled Dart code to completely reinvent layout, drawing, event handling, focus etc.

based

Only people who shit on Flutter and Dart are people who have not used them.

I learned react native should I have learned this instead? Is RN going to have a future?

Ok, where do I start with this shit?

>I just don't like that they're now trying to make it a universal platform that works on desktop too and the web
Because Flutter has been built so that it works on any device that has a screen and is able to give a canvas for the program. Flutter is still a mobile-first framework. You make a mobile app and then port it to any platform you want and it will look and work exactly the same.

flutter.dev/docs/get-started/install

For anyone who's still unsure about Flutter in this thread;
the demand is already there. Yes, people will be in disbelief for the next 2-3 years since Google's behind it, but so far we've had 7 job offers at our agency, one already with a project duration of 8 months for 2.5 million. Demand's there, solutions are there too. Also don't forget that AdWords and Alibaba (apps) are both running with Flutter.

If anything's still missing in terms of library, C# will usually do the trick.

I'm not a street shitter, so I have zero interest on phone development

What does that have to do with street shitter?
Mobile dev job:
>more money
>more chances at success if you go the loner route
>promising future, higher barrier to entry whereas any brainlet can learn HTML/CSS/JS + a framework in a month

Flutter has to adapt in order for the app to properly work on desktops and the web. For example, patterns like tabbing and hovering and keyboard shortcuts and so on don't exist on mobile operating systems.
Also, obviously, all the operating systems and the web are very different and the Flutter team is going to spend a lot of time making it work well on all platforms - time that, in my opinion, is better spent on making Flutter better where it's already good.

Who knows, feedback from app developers is great and some big companies are adopting Flutter, so maybe Google may increase the Resources for Flutter by so much that they'll be able to keep up the pace. I sure hope so. Maybe they'll even find a miracle worker who can get the web version down an acceptable size - but to me, that would be

I don't get where you get that "1MB hello world" things. All example here have dart.js that is between 150-300KB.

flutter.github.io/samples/

Guess you're right, I was looking at the uncompressed size.

Still, it's a massive, massive bundle size for those trivial applications. A view library that uses the web's features (HTML, CSS) instead of reinventing the wheel could do any of these in like a 20th of the bundle size. And in the end, all of this code still needs to be unzipped, parsed and compiled, which is going to take a while.
I'm glad, though, that it's not as bad as I feared. So thank you, user. I didn't know this site existed.

Flutter for web is more about targeting the progressive web app space than trying to pretend being a traditional html pages with DOM and all that shit. You will store flutter pages as "apps" on your browser and it will only have to be redownloaded if there's an update.

goolag is terrible at promoting their products. they think it'll survive on brand name alone (it won't)

I remember people saying the same thing about Google Ads when they were new and now look at it.

Remember when SUDDENLY everybody was talking about how great flutter was. And every testimonial was like reading from a PR textbook.

Attached: 1471747.jpg (460x288, 26K)

>Remember when SUDDENLY everybody was talking about how great flutter was
Well, they just made a big fucking deal out of it in their I/O conference. It also came out of beta just less than 6 months ago so more and more people have started to get into it.

you sound incredible paranoid user
Dart and Flutter have been around for a while, but the fact that it's now somewhat stable and apps with over 50 million users use it made it seem appealing to the public eye

Enjoy your pyramid of doom "GUI as code".

Also
>BLoC
Google has rediscovered the domain layer here? Fuck Google, they shit every API they make, and their sample apps are a mess with everything implemented in the screens.

>I just don't like that they're now trying to make it a universal platform that works on desktop too and the web
Because the world currently needs a proper cross-platform framework that is both powerful and convenient to develop.

Qt is nice but C++.. just no
JavaFX is pretty nice but I don't think compiling Java AOT is an easy process
Mono/.netcore is looking good but still needs a lot of work, maybe in 2-3 years

Look how retarded is a fucking counter using your "BLoC" pattern:
class CounterBloc extends Bloc {
@override
int get initialState => 0;

@override
Stream mapEventToState(CounterEvent event) async* {
switch (event) {
case CounterEvent.decrement:
yield currentState - 1;
break;
case CounterEvent.increment:
yield currentState + 1;
break;
}
}
}

class CounterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final CounterBloc _counterBloc = BlocProvider.of(context);

return Scaffold(
appBar: AppBar(title: Text('Counter')),
body: BlocBuilder(
bloc: _counterBloc,
builder: (BuildContext context, int count) {
return Center(
child: Text(
'$count',
style: TextStyle(fontSize: 24.0),
),
);
},
),
floatingActionButton: Column(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Padding(
padding: EdgeInsets.symmetric(vertical: 5.0),
child: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
_counterBloc.dispatch(CounterEvent.increment);
},
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 5.0),
child: FloatingActionButton(
child: Icon(Icons.remove),
onPressed: () {
_counterBloc.dispatch(CounterEvent.decrement);
},
),
),
],
),
);
}
}

cont 1/2

2/2
void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
@override
State createState() => MyAppState();
}

class MyAppState extends State {
final CounterBloc _counterBloc = CounterBloc();

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: BlocProvider(
bloc: _counterBloc,
child: CounterPage(),
),
);
}

@override
void dispose() {
_counterBloc.dispose();
super.dispose();
}
}


A fucking counter.

I have never heard of that goddamn bullshit in my entire life. I predict it will go the way of the dodo bird.

What's so retarded about that? It's just normal reactive programming, but the state is not stored in a global singleton or any stupid shit like that. Also, I don't like the flutter_bloc package, you are better of with implementing the streams/sinks with RxDart and making the blocs available to your widget tree with the provider package.

>I'm a spoiled brainlet therefore it's bad and the entire industry including current contracts worth millions of dollars better shut down because I dislike a technolgy I don't even have to use

>Qt is nice but C++.. just no
Most of Qt is JavaScript, C++ is left only for the controllers if you want.

>JavaFX
Hell no. Java doesn't belong on the web anymore. Thats what templating engines like JSP/JSF were for.

>Mono
I heard it was going to be big years ago. Still waiting...

>The world currently needs a proper X-platform framework
Why though? Use the proper tool for the job, and if your tool is of no use in another stack, then fucking learn another tool.

>Why though? Use the proper tool for the job, and if your tool is of no use in another stack, then fucking learn another tool.

Not that user, but some of us don't really want to do that every time, you know. Having a social life and free time is nice, wasting time after work to learn new tech shit is a hassle. Most of us wouldn't be in it if it weren't for the nice salary either way.

It is absolutely retarded. To begin with reactive programming =/= state management. Ever heard of a button click callback? Well that is already reactive (unlike the polling of old times, which none of you probably got to know)
Now about BLoC: Google traditionally never ever heard of clean/layered architecture and does everything in the View, that is why they come up with "patterns" like BLoC (This is not even a pattern).

I like Flutter, I just dislike state management libraries (like redux, or this BLoC shit). Proper separation of concerns is the natural way.

>I like Flutter
Oh, then I apologize. You never know with the autists on here.

You will notice how amazing it is if you ever build a complex application.
Trust me, state management is fucking difficult. It is by FAR the most difficult aspect of writing an application. Combine state with asynchronous code (not blocking your entire app on every IO and timer like we used to) and it becomes incredibly difficult to manage.
You may think "Wow, I can just write counter++ and it does exactly the same", but it doesn't. The reactive approach allows all subcomponents and even other blocs to react to when the values change and thanks to RX' amazing functions, you can combine, delay, save, replay, debounce, filter, batch, compose streams so easily that it almost feels like cheating.

BLoC is an amazing approach to state handling. Way better than the redux or mobx stuff the react community loves to bloat their programs with, which doesn't offer any of the flexibility and performs worse.

Also, I have no idea why your BLoC uses some reducer-like mapEventToState function with a switch over constants. Just call functions on your BLoC to emit new values. You don't need that redux brain cancer.

>Now about BLoC: Google traditionally never ever heard of clean/layered architecture and does everything in the View, that is why they come up with "patterns" like BLoC (This is not even a pattern).
But that's the fucking point about bloc. Nothing is done in the views. Views only dispatch events (when button is pressed, etc.) and listen to the bloc streams for when to update the UI. Blocs are entirely UI-agnostic and the UI (widgets) contain no business logic.

>not learning new shit in work hours and logging them as programming time to another project
You all gen-Zlets have so much to learn

>Also, I have no idea why your BLoC uses some reducer-like mapEventToState function with a switch over constants
It's because he uses the flutter_bloc package which is shit.

user, I'm the owner of an agency. I can't do that lmao. I make sure my employees learn it, but for myself it's hard to keep up with it since I barely do any coding.

Good lord, no wonder he is so mad.
You don't need a library for BLoC at all. Well, except RXDart, because Dart's native streams are meh.

>state management
>by FAR the most difficult aspect
Everything in imperative languages is state management. Start thinking on changing career if you find it difficult.

>The reactive approach
Again, Rx is not the only way of reactive. Any callback is already reactive and most UI systems, from the web to JavaSE Swing desktop apps to JavaME midlets to Blackberry to Android/iOS, all have reactive GUIs where you set callbacks to widgets. There is no point in using the infinite Rx transformers nor shoehorning everything into streams. Rx was just Netflix bloated library for lazy-loading infinite lists, and everyone today admits it is too damn complex (kotlin shifting away to coroutines is an example).

>Everything in imperative languages is state management. Start thinking on changing career if you find it difficult.
In most programs, state management is pretty trivial. Most programs are just scripts or server code that just run from start to finish, top to bottom, blocking, tearing down resources when it's finished. Sure, you have state to manage, but it's not comparable to what you have to do in a modern GUI to ensure your state remains consistent and predictable. View Controllers with their own state come and go, widgets with their own state which is often derived from the global state and update it come and go, you have asynchronous IO everywhere so the program jumps around like crazy and it's never finished until the user closes it.

>Again, Rx is not the only way of reactive.
True. But callbacks are not. Callbacks are event-driven programming and asynchronous, but not reactive. Reactive data is when you change one piece of data and then data that depends on it is recomputed automatically and possible side effects get executed.
Microsoft Excel, for example, is reactive. Change a cell, all cells that use that cell's value get recomputed automatically.

Also, coroutines can't replace streams. Asynchronous coroutines rely on Promises/Futures/Whatever the language calls these, and those can only resolve a single time. When you make a single web request, it will only resolve once and provide the data you requested (or the error).
Streams, on the other hand, can emit multiple times. Some emit a certain number of items and then close, some never stop emitting. You can usually get a promise from a stream: There's usually a method called next or first or last or whatever which gives you a promise that resolves the next time the stream emits something, or before it closes. But that's only a single value. Streams are to Promises what containers like vector or hashmap are to int.

Thanks Flutter Defense Team, I'm no longer paranoid!

Yes, this Jow Forums thread with *checks* 15 unique posters is where were concentrating all our marketing.

>Reactive data is when you change one piece of data and then data that depends on it is recomputed automatically and possible side effects get executed.
Is this a definition you just pulled out of your ass? Look, this is straight out of the ReactiveX site:
>'ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming'
>'ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences.'
That Observer pattern is your callback.
"Reactive" is just a marketing buzzword Netflix came up with. Callbacks were already ubiquitous back then in every GUI system.

>coroutines can't replace streams
I'm not fan of them, but yes, they actually can emit a sequence. A coroutine is just a devoce for automatic callback creation, they can use a deferred (single) or a channel (streams) to pass data to other coroutines. And that, without all the transforming bloat of Rx, is more than enough for most people. This year's Google IO has had a good session about coroutines in Android.

correct.

>the fucking Raspberry Pi for some reason
Some guy thought it would be fun. Google is apparently using it internally to power their home devices.

>those CupertinoPageRoute transitions have totally wrong curves / timings in their animation and the implementations are so rigid
Why not submit a patch? Apparently the flutter devs are open to that sort of thing.

Reading their instructions, it would seem more complicated to run the install on whatever platform you're running than it really is.
Wherever you are, just clone the flutter git repo and run flutter-doctor within it. From there the bootstrapping will be handled or you will be given clear instructions from there.
On the side of tooling... while I'm not partial to vscode as an editor, they have some really slick setup going on with the official plugins. The hot reload setup working in the emulator is pretty slick.

youtube.com/watch?v=ON0A1dsQOV0

>hello fellow posters

Attached: jews.jpg (491x491, 43K)

The more people that don't clutter the ecosystem at this point, the better for me. I missed the react boat and the potential career opportunities that came with it.

>that code
>that structure
ISHYGDDT

Attached: constanza.png (500x375, 299K)

>I missed the react boat
well, being on the lower tier of the chain forces you to keep up with meme tech.
Being a Product/Project Manager, well, it's a different job

Have to work the way up the chain from somewhere if you don't have the connections. "Project Manager" and "* Analyst" positions typically require 5-8 years of experience in X and Y for the uninitiated.

>"Project Manager" and "* Analyst" positions typically require 5-8 years of experience in X and Y for the uninitiated
>be me
>have masters
>get the job right after masters
>5-8 years
>drop it because fuck bosses
>have a startup and a taxi fleet instead
???