Amazon.co.uk Widgets
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)!

Flutter based Ubuntu 24.04 App Centre

Great to see the fruit of Ubuntu's decision to embrace Flutter. App Center made it into Ubuntu 23.10 but cements itself in 24.04 which is destined to be an LTS release.

 

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’.


TL:DR —
It is a massive endorsement for Flutter for Linux for Ubuntu to be using it for a flagship Ubuntu Desktop app like App Center.

Ubuntu App Center, Development category

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

Ubuntu 24.04 LTS App Center, Development Category
 

Ubuntu App Center, Development category

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.