Amazon.co.uk Widgets

Log in

X
Ubuntu App Centre icon
Ubuntu App Centre icon (The new App Icons shown are in the repository but are not yet in my build of 24.04, which hasn't yet been released)!

It is great to see the fruit of Ubuntu's decision to embrace Flutter. App Center made it into Ubuntu 23.10 but properly cements itself into 24.04 as a flagship app. 24.04 is an LTS release, so this is a long term bet.

TL:DR — This is a massive endorsement of Flutter for Linux by Ubuntu.

Ubuntu App Center Explore screenshot 24.04

The standout new feature of Ubuntu Desktop 23.10 has to be the new App Center, which replaces Ubuntu Software for users going forward. Combined with the new installer, these two apps give us a much deeper level of ownership of the first time user experience on Ubuntu Desktop and a strong base to iterate on going forward.
Built in Flutter and leveraging the metadata available with snap packages, this first release provides a fast and intuitive new way to manage both deb and snap packages on your machine. We also created a new ratings service, built in Rust. By combining user ratings with snap metadata we’re excited to be able to offer more dynamic ways to discover applications in future updates, including new categories like ‘most popular’ and ‘recently updated’.

Ubuntu App Center

Its snappy, and full of apps. What more do people want :)

Ubuntu 24.04 LTS App Center, Development Category
 

Software updates

You can see I have some updates to do, my bad!

Ubuntu App Center, Manage updates
Ubuntu App Center, Manage updates

So lets build it, we're Flutter people after all.

Follow the instructions in the Start building Flutter native desktop apps on Linux page at Flutter.

  • First run $ sudo apt update && sudo apt upgrade to get your system to the perfect state of updatedness.
  • Verify that you have the following tools installed: bash, file, mkdir, rm, which. $ which bash file mkdir rm which.
    Ubuntu Terminal - verify enough Linux tools are installed to get started with installing Flutter
    Ubuntu Terminal - verify enough Linux tools are installed to get started with installing Flutter
  • Install the following packages: curl, git, unzip, xz-utils, zip, libglu1-mesa, sudo apt-get install -y curl git unzip xz-utils zip libglu1-mesa.
    Ubuntu Terminal - Add curl, git, unzip, xz-utils, zip, libglu1-mesa
    Ubuntu Terminal - Add curl, git, unzip, xz-utils, zip, libglu1-mesa
  • To develop Linux apps, Flutter say, you'll also need to install these packages $ sudo apt-get install clang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev. This is quite verbose and installs a lot of dependencies.
    Ubuntu Terminal - lang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev
    Ubuntu Terminal - lang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev

Integrated Development Environment (IDE)

  • You can just use an editor like vi or Sublime Text to develop apps. If you prefer to use an IDE I'd recommend Codium which is a community-driven, freely-licensed binary distribution of Microsoft’s editor VS Code. Both are in Ubuntu App Center. Meta Meta. This article isn't about that, I'll just use the command line.
    Ubuntu App Centre - Codium
    Ubuntu App Centre - Codium
    Ubuntu App Centre - Sublime Text
    Ubuntu App Centre - Sublime Text
  • Now Install Flutter. By far the easiest way is to use App Centre. You can just install it from here without the dependencies noted above. Its a snap! That means no messing about with path environment variables.
    Ubuntu App Centre - Install Flutter
    Ubuntu App Centre - Install Flutter
  • Now, you can open a Terminal and run $ flutter doctor which will go ahead and complete its work, and tell you all about your new development toolchain. Heres a screenshot:
    Ubuntu terminal - flutter doctor reports Linux toolchain ready
    Ubuntu terminal - flutter doctor reports Linux toolchain ready

    And heres the text output of the $ flutter doctor command:
    $ flutter doctor
    Doctor summary (to see all details, run flutter doctor -v):
    [✓] Flutter (Channel stable, 3.19.4, on Ubuntu Noble Numbat (development branch) 6.8.0-11-generic, locale en_US.UTF-8)
    [✗] Android toolchain - develop for Android devices
        ✗ Unable to locate Android SDK.
          Install Android Studio from: https://developer.android.com/studio/index.html
          On first launch it will assist you in installing the Android SDK components.
          (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
          If the Android SDK has been installed to a custom location, please use
          `flutter config --android-sdk` to update to that location.
    
    [✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
        ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
    [✓] Linux toolchain - develop for Linux desktop
    [!] Android Studio (not installed)
    [✓] Connected device (1 available)
    [✓] Network resources
    
    ! Doctor found issues in 3 categories.
    $
    There would be more to do to enable Flutter for Android development, and for web apps but we're all set for Linux.
  •  Now follow the instructions from the https://github.com/ubuntu/app-center/blob/main/CONTRIBUTING.md document following on from install the Flutter Linux prerequisites.
  • The project uses a tool called Melos "to make it straightforward to execute common tasks".
  • Install it $ dart pub global activate melos. Note that it asks you to $HOME/.pub-cache/bin to your path by adding export PATH="$PATH":"$HOME/.pub-cache/bin" to your .bashrc.
  • Download the code from GitHub, If you're going to work on it, follow the contributors guide, clone the repo, and create your own branch.
    $ git clone This email address is being protected from spambots. You need JavaScript enabled to view it.:yourgithub/app-center.git
    Cloning into 'app-center'...
    remote: Enumerating objects: 12738, done.
    remote: Counting objects: 100% (12738/12738), done.
    remote: Compressing objects: 100% (2974/2974), done.
    remote: Total 12738 (delta 9591), reused 12312 (delta 9509), pack-reused 0
    Receiving objects: 100% (12738/12738), 11.58 MiB | 6.12 MiB/s, done.
    Resolving deltas: 100% (9591/9591), done.
    $

    Change into the project folder $ cd app-center
  • Now bootstrap melos, using $ melos bootstrap. According to the doc this 'connects all the local packages/apps to each other with the help of pubspec_overrides.yaml files, and it also runs pub get in all packages/apps'.
    Melos bootstrap - resolving dependencies
    Melos bootstrap - resolving dependencies
    Melos bootstrap - running flutter pub get
    Melos bootstrap - running flutter pub get
    Melos bootstrap - 2 packages bootstrapped
    Melos bootstrap - 2 packages bootstrapped
  • Now you can $ flutter run and ...
  • lt just works. Look carefully at the desktop screenshot. App Center doesn't have an app icon, just a cog, this is my running clone of the project in flutter not the App Center app from Ubuntu 24.04 which is not running! Flutter for Linux has all the flutter goodies, like hot reload and Flutter DevTools debugger and profiler, Absolutely amazing.
  • Ubuntu terminal - Flutter running app-centre for Ubuntu Linux
    Ubuntu terminal - Flutter running app-centre for Ubuntu Linux
    Flutter for Linux DevTools - Layout explorer on Ubuntu App Center
    Flutter for Linux DevTools - Layout explorer on Ubuntu App Center
Flutter for Linux compiled local test version of app-center project
Flutter for Linux compiled local test version of app-center project

See also


Ubuntu App Center – An open source project published on GitHub using the GNU General Public License v3.0 (gpl-3.0).

Building Linux apps with Flutter –  Official page with considerations unique to building Linux apps with Flutter, including shell integration and preparation of apps for distribution.

Licences, trademarks, source code licences and attributions

Licences, trademarks, source code licences and attributions

Multizone and this site is not affiliated with or endorsed by The Joomla! Project™. Any products and services provided through this site are not supported or warrantied by The Joomla! Project or Open Source Matters, Inc. Use of the Joomla!® name, symbol, logo and related trademarks is permitted under a limited licence granted by Open Source Matters, Inc. 928uk® is a trademark of Multizone Limited, registered in the UK. AdMob™, AdSense™, AdWords™, Android™, Chrome OS™, Chromebook™, Chrome™, DART™, Flutter™, Firebase™, Firestore™, Fuchsia™, Gmail™, Google Maps™, Google Pixel™, Google Play™, Pixelbook Go™, and Pixel™ and other trademarks listed at the Google Brand Resource center are trademarks of Google LLC and this site is not endorsed by or affiliated with Google in any way. Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc. The OSI logo trademark is the trademark of Open Source Initiative. Microsoft, CoPilot, Microsoft 365, Microsoft Teams, and Windows are trademarks of the Microsoft group of companies. ROKU, the ROKU Logo, STREAMING STICK, ROKU TV, ROKU POWERED, the ROKU POWERED Logo, ROKU READY, the ROKU READY Logo, the purple fabric tag design,and the purple d-pad design are trademarks and/or registered trademarks of Roku, Inc. in the UK, the United States and other countries. UNIX® and the X® logo are registered trademarks of The Open Group. Any other product or company names may be trademarks™ or registered® trademarks of their respective holders. Use of these trademarks in articles here does not apply affiliation or endorsement by any of them.

Where the source code is published here on ezone.co.uk or on our GitHub by Angus Fox, Multizone Limited it is licenced according to the open source practice for the project concerned.

BSD 3-Clause "New" or "Revised" Licence
Original source code for mobile apps are licenced using the same licence as the one used by "The Flutter Authors". This Licence, the BSD 3-Clause "New" or "Revised" Licence (bsd-3-clause) is a permissive licence with a clause that prohibits others from using the name of the project or its contributors to promote derived products without written consent.
GNU General Public Licence v2.0 or later
Original source code for Joomla! published here on ezone.co.uk by Angus Fox, Multizone Limited is licenced using the same licence as the one used by Joomla!. This Licence, the GNU General Public Licence Version 2 or later (gpl-2.0) is the most widely used free software licence and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same licence.

You can use any code you find here, just respect the licences and dont use the name of this site or our company to promote derived products without written consent. I mean, why would you? You're not us!

Amazon Associate
As an Amazon Associate we earn from qualifying purchases.
Logo
Our Logo Image is by Freepik. We chose it because its an M and also the letter A twice - and that represents us.