A client for Mopidy implemented with Flutter and Dart.
Although Mopicon is styled as an Android app, it compiles into a native application on other platforms as well. It also compiles into a Web application and could also be turned into a Mopidy server-side extension by implementing the necessary Python boilerplate (which does not exist, yet).
(Requires Mopidy-TuneIn backend extension installed).
The list of search results, tracklist and playlists all support item selection by dragging an item from left to right. Selection can also be performed by a long mouse button press. Once one item is selected, additional items can be selected or deselected by tapping an item. Additionally, in playlists and in the tracklist, items can be reordered by vertically dragging an item to a new position.
The main reasons I started this project:
-
I wanted to learn Dart and Flutter.
-
I wanted to build the UI to my very personal taste.
- DISCLAIMER
-
This is my very first Flutter/Dart project. Take the code with a grain of salt.
First of all, you need a properly configured Mopidy server. See the Mopidy website for details about installing and configuration.
In order to run or build the application, you need at least Dart 3.0.0
and Flutter 3.13.0
installed.
Clone this repository and execute
flutter run
If your Mopidy server is not running on localhost:6680
, you need to set the correct host and port for your server on Mopicon’s Settings
screen.
- NOTE
-
If you select a web browser as output device from the displayed list of connected devices, album covers and thumbnails will not be loaded and displayed, because of the browser’s security restrictions. This would only work if the Mopicon web application is loaded from the Mopidy host and port, if Mopicon is installed as a Mopidy extension, for example.
In order to build the application as an executable on Linux, for example, invoke
flutter build linux
For Development, I used Android Studio 2022.3.1 with Flutter Intl
plugin installed.
This project uses my mopidy_dart_client library for communicating via a Websocket to the Mopidy server.
Copyright © 2023 Thomas Kern
Licensed under MIT License. See LICENSE for details.
The following vectors and icons were provided by SVG Repo:
- jewel_case.svg and jewel_case.png
-
Licensed under CC0 1.0 Universal PD Dedication (Public Domain)
- note.svg and note.png
-
Based on "Music Note 31 Vectors SVG" from "Frexy Glyph Icons" collection, licensed under CC Attribution License by author Frexy.