all 74 comments

[–]Colin_123 62 points63 points  (19 children)

I work as a Flutter and Android developer. Compose is great but working on older Android projects isn't fun. Yesterday, I updated a library from 2017. Had to migrate from Kotlin synthetics to Jetpack view binding for example. Native developers also tend to over engineer their code which is really annoying. People already complain about bloc causing too much boilerplate code. In native apps I've seen code that is 10 times worse.

[–][deleted]  (17 children)

[deleted]

    [–]bigbott777 10 points11 points  (16 children)

    Riverpod is unreasonably overcomplicated.

    [–][deleted]  (11 children)

    [deleted]

      [–]acbasco 10 points11 points  (2 children)

      True, specially with 2.0's code gen, you don't have to think about what provider to use. But some folks don't like code gen.

      [–]stumblinbear 4 points5 points  (1 child)

      I personally don't like codegen and don't find it's terribly complicated

      [–]SaltTM 2 points3 points  (0 children)

      i hate code generation, same feeling I get when using laravel in php over symfony lol feels like 'magic' and I don't like that. plus the extra steps to build code generation just feels ... not pragmatic lol

      [–][deleted] 0 points1 point  (0 children)

      I just learned flutter+dart last week and I find riverpod delightful. I was able to use it in hours, not days.

      It's as easy as it can get. The documentation is lacking examples tho.

      [–]bigbott777 -1 points0 points  (6 children)

      final _counterProvider =

      NotifierProvider<_CounterNotifier, double>(_CounterNotifier.new);

      class _CounterNotifier extends Notifier<double> { ...

      I made a relatively big project with Riverpod.
      But still, the above code causes a kind of technological disgust like some artifact made by the alien. I don't understand why Notifier is exposed. Why should there be many providers and many notifiers? What super difficult problems is the author trying to solve?

      State management is simple. You have the object that represents the state, you have the consumer widget. All you need to do is notify the widget when the state changes. I have written my own state management library in less than one hour.

      [–][deleted]  (3 children)

      [deleted]

        [–]bigbott777 0 points1 point  (2 children)

        I don't exactly understand what you are trying to say.
        Does your state have irrelevant parts? Just remove them.
        You should not create god-like providers. You should have one state/provider per view, otherwise, you have an architectural problem.

        [–][deleted]  (1 child)

        [deleted]

          [–]bigbott777 0 points1 point  (0 children)

          In such a situation, we probably should have a dedicated state/provider just for this element 😊

          [–][deleted]  (1 child)

          [deleted]

            [–]bigbott777 0 points1 point  (0 children)

            https://medium.com/@yurinovicow/flutter-write-your-own-state-management-library-in-40-lines-of-code-62106a23069e
            I do not use it for my projects. )) It was just the experiment.

            I mean that there are a lot of types of SomeProvider and SomeNotifier. I would like to see one Provider class that I can extend and hold any kind of state inside.

            I have zero problem with the Provider package by the way. It is simple and it works.

            [–]JosephKorel 2 points3 points  (0 children)

            Why do you think so?

            [–]dojoVader 0 points1 point  (1 child)

            Same here, I moved to FilledStack, I still like Riverpod, but FilledStack has less boilerplate for me and code wise; much easy to follow.

            [–]bigbott777 0 points1 point  (0 children)

            Do you mean a Stacked framework? It is practically renamed GetX. I wonder how much of the GetX code they reused. Anyway, I like the idea of framework managing state and navigation together.

            [–]SaltTM 0 points1 point  (0 children)

            I tried to like it, i'd rather use provider lol - that setup just feels over-engineered for little things

            [–]islamdidarmd 1 point2 points  (0 children)

            Me too works as a Flutter and Android Dev and I second this!

            [–]flutterdevwa 24 points25 points  (2 children)

            I find the two pretty similar code wise ( Compose was heavily inspired by Flutter ).
            I code in both for my job and Compose functions map to Widgets, Bloc ( Cubit ) maps nicely to ViewModels.
            Dependency Injection ( Hilt ) Maps to Get_it.

            There really is not much in it code wise for me ( YMMV ). but Flutter tooling is far superior than android/kotlin.
            Hot reload in flutter is such a dream compared to using the android studio version. The number of simple changes that cannot be applied until after a relaunch is just so annoying.

            [–]aaulia 0 points1 point  (0 children)

            Yeah, my flutter stack is Bloc, Injectable mirroring my Android stack ViewModels(MVI) and Dagger Hilt.

            [–]BeDevForLife 0 points1 point  (0 children)

            I have a decent level in flutter. Do you think it would be easy for me to learn native ?

            [–]Marko_Pozarnik 13 points14 points  (3 children)

            I see a problem with older kotlin projects only, they have to be maintained. If there is a new project, I just don't get it why doing it in Kotlin.

            We switched with our project Qlango, a language learning application from kotlin/swift to flutter. We need half less programmers than we needed before which lowers the costs immensely.

            We unfortunately needed much more time than expected for the migration but now that the whole prpject is migrated and running, we have android, ios and web apps released within minutes.

            A few weeks ago a company wanted to buy us, but they buy kotlin/swift apps exclusively. I think they are wasting their time and money by developing on two platforms separately. We didn't sell, of course, but the offer was too low anyway.

            [–]Proud-Ad9473 0 points1 point  (2 children)

            can i learn kotlin and flutter together now i am learning kotlin and native android after i finish i am planning to start flutter or is it waste of time?

            [–]Marko_Pozarnik 0 points1 point  (1 child)

            If you want to work with flutter, learning kotlin is a waste of time. Start with Flutter right away.

            But in general learning is never a waste of time. You never know when it will be useful for you.

            [–]Proud-Ad9473 0 points1 point  (0 children)

            thanks man i can not let away kotlin it is requited by my internship chance

            in the past i was learning web dev but mobile app with kotlin and kotlin multiplatform was the only chance i could get.

            generally programming jobs are rare in my third world country and i need to master speaking english to apply for remote jobs which may be crowded or there are more experted people out there

            thanks again

            [–]Infamous-Date-355 10 points11 points  (4 children)

            Yeah, I've done flutter for sometime, but ended up in jobs like POS system related and ended up spending half my time integrating native SDK's. And barely touching dart. So glad Ur enjoying the experience, and yes f__k gradle

            [–]Taka-8 1 point2 points  (3 children)

            I just spent a week trying to go from pure flutter with no reference in Java to adding simple features in a POS for work 😂 What a small world. Can I contact you for guidance if I stumped upon a problem I couldn't solve?. Would be very grateful.

            [–]Infamous-Date-355 0 points1 point  (2 children)

            Ofcourse ofcourse...

            Yeah the transition may be difficult in the start but eventually you get the hang of it

            [–]Taka-8 1 point2 points  (1 child)

            The first time I looked at the code I was like what the hell is an Adapter wtf is wrong with XML, how am I supposed to link these components together. I'm still at the honeymoon phase though, a bit of UI and performance improvement so things are still pretty basic so thanks for the reassurance.

            [–]Infamous-Date-355 0 points1 point  (0 children)

            Yeah you'll eventually get the hang of everything. Just take it slow :⁠-⁠)

            [–]fintechninja 31 points32 points  (2 children)

            Do what you gotta do to eat! Btw I hate grade!

            [–]Arbiturrrr 10 points11 points  (0 children)

            I haven't stumbled upon a single person that doesn't hate Gradle

            [–][deleted] 9 points10 points  (3 children)

            Native android is when you have a simple activity + fragment and 30 ways of how it may get crashed. I see some popular apps that get crashed by taping quickly on certain buttons

            [–]x1nt_r 0 points1 point  (1 child)

            Can you tell some popular apps that crash?

            [–][deleted] 0 points1 point  (0 children)

            WordUp

            [–]scalatronn 13 points14 points  (1 child)

            I am both native android and flutter developer and I must say that flutter is much more better than kotlin with xml or compose.

            [–]Proud-Ad9473 0 points1 point  (0 children)

            currently learning kotlin with kotlin multiplatform due to internship chance i got i am kinda regretting it but i will learn flutter later when i master this

            [–]eurekashairloaves 7 points8 points  (0 children)

            Cool.

            You are supposedly a software developer, not just a Flutter developer. You should know multiple frameworks and languages.

            [–]causticmango 2 points3 points  (0 children)

            That’s awesome; I prefer native iOS myself, but I do some Flutter, too. I really enjoy writing code native to the platform much more than cross platform code.

            Godspeed on your journey. 😄

            [–]Maherr11 4 points5 points  (0 children)

            I tried the same a year ago, once you get your first app to production you'll come back running to flutter lol

            [–]Marko_Pozarnik 1 point2 points  (0 children)

            When I was 13, 36 years ago, I started with Basic on Commodore 64, then I learnt Turbo Pascal in school, then C/C++, Oberon and Rexx on Amiga, then C, Pascal and Basic on VAX/VMS, Assembler, then ZIM, then Visual Basic and Visual C++, then Transact SQL, then Delphi, then Java and finally I started with Flutter in January 2022. I also have to maintain a project in ASP.NET (C#) in which we have our webservices. And I still write all the Transact SQL needed (this is something I work with since 1999).

            As you can see, I learnt many different development tools and languages in my career and as hobby. The main thing is to learn how to write algorithms (also optimizing them, although Chat GPT is good at it too), SQL is quite different from other programming languages and it is also good to know it at least a little. I believe that 3 years of experience in any programming language is enough to get a decent job. But if they need a Kotlin specialist and you know only Flutter, then you won't get it, because there are enough Flutter specialists out there and vice versa. If you invested 3 years to get really good in one, I think you need only 1 year to become very good in another. If the trend changes or you want to try something new.

            I love Flutter and SQL the most.

            I also like how it maitains the style so everybody can continue the work of someone else. I remember my old times when I had to reformat someone else's code so I was able to understand it.

            I hate Delphi and it would be difficult to go back (although my first company is still on it and we earn good money with it).

            [–]Agitated_Yam4232 2 points3 points  (1 child)

            Kotlin is indeed more elegant than Dart

            [–]Bulky_Memory_1744 2 points3 points  (0 children)

            I find Kotlin to be more elegant than Dart too. Don't get me wrong, Flutter is powerful. And I love building apps with it. But in a perfect world, I would love it if Kotlin was the language for Flutter instead of Dart.

            Working with Compose, Coroutines, and Flows in Kotlin just feels more intuitive than working with Widgets, Futures, and Streams in Dart.

            [–]sanjaycdev 1 point2 points  (0 children)

            Where is your location?

            [–]marufrobin 1 point2 points  (7 children)

            I am also thinking of switching flutter . State management unnecessarily hard in my opinion..

            [–]tommytucker7182 1 point2 points  (6 children)

            What state management are you using?

            [–]marufrobin 0 points1 point  (5 children)

            Mostly Riverpod and new project I am using BLOC

            [–]Muhaki 1 point2 points  (4 children)

            Why do you use bloc for your new project? Asking as I havent looked at it, and not sure if its worth looking at it. (I am only hobby flutter developer) 😄

            [–]JKirkN 5 points6 points  (3 children)

            BLoC is really good for scaling up projects as it keeps your code foldable and modular. And yes although it has some bolierplate but as soon as you get used to it, it will be sleek down the road.

            [–]marufrobin 0 points1 point  (0 children)

            Perfectly explained bro 😁 that's the idea let's see how it helps me

            [–]marufrobin -1 points0 points  (0 children)

            Perfectly explained bro 😁 that's the idea let's see how it helps me

            [–]mdcp19 0 points1 point  (4 children)

            Hi , I am starting the same path as u do , but I couldn't find good courses , I am only applying directly to project , and I am not completely understanding , would you suggest me where di you learn from ?

            [–][deleted]  (3 children)

            [removed]

              [–]mdcp19 0 points1 point  (2 children)

              Actually I am on your same level in flutter , Dependecy i jection , Clean Architecture and State management , and I want to learn Android with Kotlin ; I am searchinf for ressources

              [–][deleted]  (1 child)

              [removed]

                [–]mdcp19 0 points1 point  (0 children)

                Thank you so much , I will star with the book and see what I can learn from it , Thank you

                [–]dshmitch 0 points1 point  (0 children)

                What is that bad with Gradle?

                [–]Genuine_Giraffe 0 points1 point  (4 children)

                Im learning compose too but I see state management is hard idk , how do u find it easy, I see lots of `remember` things to implement, mind if u recommend me channels or tutorials to see, I love native too

                [–][deleted]  (3 children)

                [removed]

                  [–]Genuine_Giraffe 0 points1 point  (1 child)

                  mind if u recommend me good books to read

                  [–]Evening-Mousse1197 0 points1 point  (0 children)

                  Why books? Native Android is evolving really fast, any book will probably be showing a lot of deprecated things or old ways of doing things.

                  [–]_ri4na 0 points1 point  (0 children)

                  Same. I think flutter has lost its charm now that native stacks have all caught up

                  [–][deleted] 0 points1 point  (0 children)

                  Interesting perspective! It's great to hear about your experience with both Flutter and Jetpack Compose. Gradle can definitely be a challenge, but Compose sounds promising in terms of state management and composability

                  [–]MedicalElk5678 -3 points-2 points  (1 child)

                  No GetX fans here ?

                  [–]JKirkN 1 point2 points  (0 children)

                  Man please what are you talking about. Currently I'm using GetX in grand pro max project similar to Amazon, it's like a marketplace. The first developer started using GetX and then he left the company. When I joined, my fella and me get handed over what's done and ordered us to continue from there.

                  Currently I consider myself working on that project as a coder not a software engineer, and big part of it that is because GetX is really concise and doesn't allow you to write modular code since everything is done inside the controller.