Announcement

Collapse
No announcement yet.

Canonical Continues To Talk Up Google's Flutter UI Toolkit

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by kvuj View Post
    I wonder why they decided to choose Flutter. I doubt it's for performance, GTK4 has an excellent GL backend and a Vulkan experimental one.

    Maybe customization? I heard it's quite easy to change how a Flutter app works and Canonical has traditionally disliked GHI guidelines.

    Cross platform? Wha... what? Are they planning on making their installer work as a Windows app too?
    Flutter is just very easy to work with and add new widgets to, moreso than anything but Electron pretty much (and that of course has some pretty serious performance issues...).

    Comment


    • #12
      I'm more interested on how packageable it is. Will we get it in a state were it builds sanely? If it's only available as snap and distros don't package it because it builds as horrible as electron for example, I don't think it will gain a lot of traction.

      Comment


      • #13
        Originally posted by kpedersen View Post
        Code:
        Widget titleSection = Container(
        padding: const EdgeInsets.all(32),
        child: Row(
        children: [
        Expanded(
        /*1*/
        child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        /*2*/
        Container(
        padding: const EdgeInsets.only(bottom: 8),
        child: Text(
        'Oeschinen Lake Campground',
        style: TextStyle(
        fontWeight: FontWeight.bold,
        ),
        ),
        ),
        Text(
        'Kandersteg, Switzerland',
        style: TextStyle(
        color: Colors.grey[500],
        ),
        ),
        ],
        ),
        ),
        /*3*/
        Icon(
        Icons.star,
        color: Colors.red[500],
        ),
        Text('41'),
        ],
        ),
        );
        Do people find this particularly good to lay out 3 trivial components in a classic row / column container? Now don't get me wrong, even an ancient toolkit like Motif had its own issues but it seems to look elegant in comparison.

        Not to mention the next task will be to bind the C++ code that people use to actually write software to sodding Dart. This is a very awkward workflow I must say.

        Are there any flutter users here that have also used a standard GUI toolkit to compare against? It would be really interesting to hear why they like Flutter. I feel like I must be missing something!
        People look at simple and intuitive UIs and think they must be simple and intuitive to write. They're not. They're complex beasts and any solution that lets you build a flexible UI will look exactly like what you posted.
        Whether we're talking a Java UI SDK, CSS, Flutter or whatnot, you still need to be able to specify layout, positioning, alignment, margins, insets, colors...

        Comment


        • #14
          Originally posted by 144Hz View Post
          kvuj Paid partnership with Google.
          Must be a bummer for you as you're a big GTK fan.

          Comment


          • #15
            Originally posted by chocolate View Post
            Classic 2011+ Canonical, always trying to disrupt the Linux ecosystem, always making the wrong choice (except when backtracking).
            It's actually rather surprising that they didn't create their own toolkit.

            Comment


            • #16
              Originally posted by t.s. View Post

              Could you share whats the minuses of Qt toolkits? As i know, they're qute easy to use, and you can choose to separate UI/UX with logic, or half-combine that.
              Qt has the following deficiencies from my point of view (I've worked with it for many years). Doesn't pretend for objectivity.

              * C++ sucks, and I mean it. Because Qt has an asynchronous event model combined with custom object system and ownership prepare for tons of memory-related issues for anything bigger than hello world.
              * There are bindings for some other languages in different maturity states but in general it's pretty hard to bind anything to C++ FFI.
              * The need for the moc compiler, so the sources are plagued with non-standard language extensions and macros. I think there is a 3rd-party library to partially overcome this.
              * The framework itself is huge. It's not practical to build any custom version of it for a particular purpose.
              * Packaging and deploying is a PITA. Tons of dependencies, plugins, helper files that must be assembled properly. And the resulting bundle is quite big.
              * The WebEngine is based on Chromium, so pulls another 50MB if your application uses web views. It doesn't support MinGW compiler which forces a complicated set of separate build scripts for Windows/Visual Studio and *nix systems with clang/gcc.
              * LGPL or very expensive license, which limits it in some contexts. This is highly subjective though.
              * Qt Company is not very fast in fixing reported issues.

              Comment


              • #17
                Yeah, let's all get on board with another GUI framework written in a web technology [/sarcasm]

                I wish these idiots would use proper tools, or to put it another way, actual systems programming languages. Web technologies suck. GC sucks.

                We're just throwing performance down the drain because people won't learn to program properly in something like C, C++, or even Rust (not a fan of Rust myself, but at least it's a proper systems programming language).

                Comment


                • #18
                  Originally posted by kpedersen View Post
                  Do people find this particularly good to lay out 3 trivial components in a classic row / column container? Now don't get me wrong, even an ancient toolkit like Motif had its own issues but it seems to look elegant in comparison.
                  There isn't much "good" when it comes to GUI design. Even the simpler text layout edge case has failed to produce a widely accepted algorithm and is handled with either a turing complete language (latex) or xml and manually moving stuff about.

                  Practically speaking, behind the scenes GUIs are a whole lot of linear algebra equations so your only choices are between heavily nested JSON/XML for interface description languages or heavily functional (and possibly nested) functional DSL that do both the description and the logic. The latter is what people did with latex and tkinter. The former is what people been trying to do since the 90s with HTML and the likes. Both approaches had their hits and misses. The underlying issue is that that C/C++ are uniquely poor at manipulating binary trees due to their imperative syntax so whatever it is you come-up is going to be a bad compromise between performance and convenience.

                  Rust's generics are a bit too verbose for the job. Dart is close but doesn't really perform all that well. Go recently approved generics might hit the mark but that will take half a decade to flesh out...

                  So, meanwhile, flutter I guess :/

                  Comment


                  • #19
                    Originally posted by kpedersen View Post
                    Code:
                    Widget titleSection = Container(
                    padding: const EdgeInsets.all(32),
                    child: Row(
                    children: [
                    Expanded(
                    /*1*/
                    child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                    /*2*/
                    Container(
                    padding: const EdgeInsets.only(bottom: 8),
                    child: Text(
                    'Oeschinen Lake Campground',
                    style: TextStyle(
                    fontWeight: FontWeight.bold,
                    ),
                    ),
                    ),
                    Text(
                    'Kandersteg, Switzerland',
                    style: TextStyle(
                    color: Colors.grey[500],
                    ),
                    ),
                    ],
                    ),
                    ),
                    /*3*/
                    Icon(
                    Icons.star,
                    color: Colors.red[500],
                    ),
                    Text('41'),
                    ],
                    ),
                    );
                    Do people find this particularly good to lay out 3 trivial components in a classic row / column container? Now don't get me wrong, even an ancient toolkit like Motif had its own issues but it seems to look elegant in comparison.

                    Not to mention the next task will be to bind the C++ code that people use to actually write software to sodding Dart. This is a very awkward workflow I must say.

                    Are there any flutter users here that have also used a standard GUI toolkit to compare against? It would be really interesting to hear why they like Flutter. I feel like I must be missing something!
                    You don't need to inline everything; there's no reason you couldn't assign some of those widgets to variables and compose the container with them to aid with code readability. You just need to structure your code in a way that makes it easy for you to understand and work with.

                    Comment


                    • #20
                      Originally posted by c117152 View Post
                      Rust's generics are a bit too verbose for the job.
                      Rust is not particularly good for classical GUI programming because of the ownership/borrow checker. Most GUI frameworks are MVC with sea of objects referencing each other, which is far from idiomatic Rust (possible though with Rc/Arc). Garbage collector fits much better here in my opinion. So most of the attempts to create Rust-based GUI framework are variations of DOM-based models (description and logic in one go).

                      Comment

                      Working...
                      X