Invoice Ninja client built with Flutter

Last update: Aug 11, 2022

Invoice Ninja

Client app for the Invoice Ninja web app.

  • Google Play Store: v4 | v5
  • Apple App Store: v4 | v5

Dashboard View Invoice List Invoice New Invoice

Setting up the app

  • Initialize the config file

    cp lib/.env.dart.example lib/.env.dart

  • Support running the code unsigned on Android

    cp android/app/build.gradle.dev android/app/build.gradle

  • Run the app

    flutter run

Note: if you don't have an Invoice Ninja backend setup you can test the app with these credentials:

Steps to remove non-FOSS code

cp android/build.gradle.foss android/build.gradle
cp lib/utils/oauth.dart.foss lib/utils/oauth.dart
cp lib/ui/app/upgrade_dialog.dart.foss lib/ui/app/upgrade_dialog.dart
cp android/app/src/main/AndroidManifest.foss.xml android/app/src/main/AndroidManifest.xml
cp pubspec.foss.yaml pubspec.yaml 
rm pubspec.lock

Application Architecture

The application was created using the Flutter Redux Starter.

The architecture is based off these two projects:

Blog Posts

Code generation

  • Run flutter packages pub run build_runner build --delete-conflicting-outputs to regenerate the model files. It will also remove the old generated files so conflicts are avoided..

Tests

  • Run flutter drive --target=test_driver/all_it.dart to run the tests

Code Signing

  • Run cp android/app/build.gradle.prod android/app/build.gradle to support running the code signed
  • Run cp android/key.properties.example android/key.properties to create the keys file
  • Run keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias invoiceninja to generate a key to be able to sign the android application.
  • Update android/key.properties according to the parameters you entered in previous command when you generated the key
  • Open a new Firebase project from your console. Firebase is used for authentication.
    • Inside the project go to Authentication and enable at least one method.
    • After go to add a new Android application. For the package name add com.invoiceninja.flutter
    • Press "Register App" button.
    • Download "google-services.json" and put it in android/app directory.

Credits

https://github.com/invoiceninja/invoiceninja#credits

Contributions

We gladly accept contributions! If you'd like to get involved with development please join our Slack group.

GitHub

https://github.com/invoiceninja/admin-portal
Comments
  • 1. Slow typing in v5

    INFO

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30 5.1.31

    What environment are you running? Docker

    Have you checked log files (storage/logs/) Please provide redacted output not applicable

    Have you searched existing issues? yes

    Have you reported this to Slack/forum before posting? no

    Describe the bug see below

    Steps To Reproduce use any text editor

    Expected behavior normal typing

    DESCRIPTION

    I've tried v5 with these setups (extensions disabled):

    • windows + edge
    • windows + firefox
    • linux + firefox
    • linux + chrome

    In all cases typing is very slow - there's a short (roughly 1 second) delay before a character is shown in the ui. I can type a whole line of text, then wait a few moments while the string is printed in the UI. It's not instantaneous.

    It's as if the javascript running on the page is VERY aggressive and filtering every keypress.

    Has anyone else experienced this?

    Reviewed by grokky1 at 2021-03-25 09:20
  • 2. App does not refresh data until re-login

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30

    What environment are you running? ZIP

    Have you checked log files (F12 console) Please provide redacted output

    unreachable code after return statement
    main.foss.dart.js:3:42
    Error while trying to load font family "packages/material_design_icons_flutter/Material Design Icons":
    SyntaxError: An invalid or illegal string was specified main.foss.dart.js:63781:47
    unreachable code after return statement
    main.foss.dart.js:3:47
    unreachable code after return statement
    main.foss.dart.js:3:47
    ## Refresh data - include static: false js_primitives.dart:47
    POST: https://>REDACTED>/api/v1/refresh?current_company=true&updated_at=1620233449&first_load=true js_primitives.dart:47
    unreachable code after return statement
    main.foss.dart.js:3:46
    unreachable code after return statement
    main.foss.dart.js:3:43
    unreachable code after return statement
    main.foss.dart.js:3:46
    unreachable code after return statement
    main.foss.dart.js:3:43
    unreachable code after return statement
    main.foss.dart.js:3:52
    unreachable code after return statement
    main.foss.dart.js:3:52
    unreachable code after return statement
    main.foss.dart.js:3:42
    unreachable code after return statement
    main.foss.dart.js:3:42
    unreachable code after return statement
    main.foss.dart.js:3:47
    unreachable code after return statement
    main.foss.dart.js:3:46
    unreachable code after return statement
    main.foss.dart.js:3:46
    
    ## Refresh data - include static: false js_primitives.dart:47
    POST: https://<REDACTED>/api/v1/refresh?current_company=true&updated_at=1620233449&first_load=true js_primitives.dart:47
    

    Have you searched existing issues? https://github.com/invoiceninja/invoiceninja/issues/5490#issuecomment-830164527

    Describe the bug All those fancy refresh button in the app appear to do nothing. Invoices that would actually be SENT are still shown as DRAFT and so on… Once you logout and in, everything is back in sync.

    Steps To Reproduce

    1. Login on machine A with user U
    2. Draft invoice
    3. Login in machine B with user V
    4. Send invoice from machine B
    5. Click refresh on machine A
    6. Invoice is still a DRAFT
    7. Logout user U from machine A
    8. Login on machine A with user U

    Expected behavior Data is up-to-date and synced everywhere

    (v5) Can you replicate the issue on our demo site? Impossible due to lack of credentials for user creation

    Reviewed by itkfm at 2021-05-05 17:33
  • 3. not adding products when clicking on the product

    **What version of Invoice Ninja are you running? v5.2.6-C51

    What environment are you running? Dedicated Hosting

    Have you checked log files (storage/logs/) Please provide redacted output no output in logs

    Have you searched existing issues? yes

    Have you reported this to Slack/forum before posting? no

    Describe the bug When typing for a product, the product list appears but can't add the product info by clicking on the product, All options are enabled in product settings, when typing in prodict id field for adding a product to the invoice, you see the options but not able to add them, fullin option is enabled, tested in chrome and edge

    Steps To Reproduce Please list the steps to reproduce the issue default installation,

    Expected behavior the product info is added to the invoice

    Screenshots

    image

    Additional context i have installed 3 in the past, and upgraded them to newest version, old and new version are 5.XXX i have installed a new one from scratch as discribe on the install page and this issue popped up, reinstalled the application, no luck, i installed a 2th new install for a new client and the same issue is there, checked all the fields and settings as my own working version, all are the same

    Note: Before posting don't forget to check our "Troubleshooting" category in the docs (https://invoiceninja.github.io/docs/self-host-troubleshooting/).

    (v5) Can you replicate the issue on our demo site? https://demo.invoiceninja.com

    No, this issue is not active when you do an upgrade from a older version, this is the case for new installations

    Reviewed by ReaperOfTheSoul at 2021-06-26 10:03
  • 4. Editing Time Tracking details behaves unpredictable

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30 v5.1.65-C48

    What environment are you running? Docker

    Have you checked log files (storage/logs/) Please provide redacted output No

    Have you searched existing issues? Yes

    Have you reported this to Slack/forum before posting? No

    Describe the bug When editing or adding Time Tracking Entries, sometimes it is overwriting and or deleting previous Entries, which is critical if we use Invoice Ninja as primary Time Tracking System for Billing.

    When I am affected the whole Time Tracking Screen is behaving weird.

    As i am unable to write steps to reproduce or to describe the Issue, I will take a short Video and Post it in the Comments as soon as I can reproduce the Issue again.

    Steps To Reproduce Unable to provide "Steps To Reproduce", see Video in Comments.

    Expected behavior Time Tracking should only delete/edit the Entries I directly interact with.

    Screenshots Unable to provide "Screenshots", see Video in Comments.

    (v5) Can you replicate the issue on our demo site? https://demo.invoiceninja.com Did invest some minutes and tried to reproduce on my instance and on the demo, but i am unable for now on both.

    Reviewed by Akjo4712 at 2021-05-28 07:29
  • 5. F-Droid build failed

    /home/vagrant/.pub-cache/hosted/pub.dartlang.org/flutter_styled_toast-2.1.3/lib/src/styled_toast.dart:497:63: Error: Property 'window' cannot be accessed on 'WidgetsBinding?' because it is potentially null.
     - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../srclib/flutter/packages/flutter/lib/src/widgets/binding.dart').
    Try accessing using ?. instead.
          data: MediaQueryData.fromWindow(WidgetsBinding.instance.window),
                                                                  ^^^^^^
    /home/vagrant/.pub-cache/hosted/pub.dartlang.org/flutter_styled_toast-2.1.3/lib/src/styled_toast.dart:681:29: Error: Method 'addObserver' cannot be called on 'WidgetsBinding?' because it is potentially null.
     - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../srclib/flutter/packages/flutter/lib/src/widgets/binding.dart').
    Try calling using ?. instead.
        WidgetsBinding.instance.addObserver(this);
                                ^^^^^^^^^^^
    /home/vagrant/.pub-cache/hosted/pub.dartlang.org/flutter_styled_toast-2.1.3/lib/src/styled_toast.dart:1559:29: Error: Method 'removeObserver' cannot be called on 'WidgetsBinding?' because it is potentially null.
     - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../srclib/flutter/packages/flutter/lib/src/widgets/binding.dart').
    Try calling using ?. instead.
        WidgetsBinding.instance.removeObserver(this);
                                ^^^^^^^^^^^^^^
    FAILURE: Build failed with an exception.
    * Where:
    Script '/builds/linsui/fdroiddata/build/srclib/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1102
    * What went wrong:
    Execution failed for task ':app:compileFlutterBuildRelease'.
    > Process 'command '/builds/linsui/fdroiddata/build/srclib/flutter/bin/flutter'' finished with non-zero exit value 1
    

    Could you please take a look? Thanks!

    Reviewed by linsui at 2022-05-15 16:54
  • 6. Multi-currency Transaction not visible properly in reports

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30 Self hosted - v5.3.33-C67 Online (invoicing.co) - v5.3.33-C67

    What environment are you running? Ubuntu 20.4 for self hosted

    Have you checked log files (storage/logs/) Please provide redacted output No

    Have you searched existing issues? Yes, Could not find anything similar.

    Have you reported this to Slack/forum before posting? i have reported it using contact us (today only after trying on invoicing.co)

    Describe the bug A clear and concise description of what the bug is.

    Steps To Reproduce Create Client in Foreign currency. (INR 2500) Receive Payment in foreign currency. Apply conversion to local currency in payment. (GBP 25) Check the reports for payments / profit or loss -- amount shows as £2500.

    Expected behavior Expect amount it to shows in appropriate currency. considering transaction is in INR, either we should show it in iNR everywhere or local currency.

    Screenshots If applicable, add screenshots to help explain your problem. Screenshot 2021-12-03 at 13 33 26 Screenshot 2021-12-03 at 13 34 45 Screenshot 2021-12-03 at 13 35 28

    Additional context Add any other context about the problem here.

    (v5) Can you replicate the issue on our demo site? https://demo.invoiceninja.com

    Reviewed by HarshadkCon at 2021-12-03 13:36
  • 7. Recurring invoices are sorted wrong

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30 v5.3.23

    What environment are you running? ZIP

    Have you checked log files (storage/logs/) Please provide redacted output NA

    Have you searched existing issues? Yes

    Have you reported this to Slack/forum before posting? No

    Describe the bug When you go to the page where all invoices are listed and sort by number, the recurring invoices are always at the end of the list. Example: You have 5 invoices, invoice number 4 is a recurring invoice. When you sort by number counting down, the output will be 5, 3, 2, 1, 4

    IMPORTANT: It only happens when you also have a recurring prefix!

    Steps To Reproduce

    • Set a recurring prefix
    • Have multiple existing invoices with 1 or more recurring invoice in the middle

    Expected behavior NA

    Screenshots 1 1

    Additional context Add any other context about the problem here.

    (v5) Can you replicate the issue on our demo site? https://demo.invoiceninja.com Absolutely

    Reviewed by stefaandevylder at 2021-10-16 14:24
  • 8. iOS APP: Always prompts for Add new company

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30

    v5.3.27-C62 / Latest available iOS app from the appstore (iOS 15)

    What environment are you running? Docker

    Problem: Everytime I open the app on iOS it prompts for new company details. When i fully close the app from the app switcher and open it again, it prompts me again.

    To be clear: there are already 3 companies set up ...

    image

    Reviewed by alexanderhofstaetter at 2021-10-25 08:54
  • 9. building error, master branch

    hi,

    when run in android studio show this error.

    event sent after app closed: {id: 0, progressId: null, message: Running "flutter pub get" in flutter-client-master...} event sent after app closed: {id: 0, progressId: null, finished: true} Launching lib\main.dart on SM G9650 in debug mode... Running Gradle task 'assembleDebug'... Note: C:\development\flutter.pub-cache\hosted\pub.dartlang.org\in_app_purchase-0.3.4+4\android\src\main\java\io\flutter\plugins\inapppurchase\MethodCallHandlerImpl.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. Note: C:\development\flutter.pub-cache\hosted\pub.dartlang.org\url_launcher-5.5.0\android\src\main\java\io\flutter\plugins\urllauncher\WebViewActivity.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\development\flutter.pub-cache\hosted\pub.dartlang.org\webview_flutter-0.3.22+1\android\src\main\java\io\flutter\plugins\webviewflutter\FlutterWebView.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

    Reviewed by jesulo at 2020-08-25 01:36
  • 10. building error

    Hello good day, I have this error in master branch.

    Compiler message: lib/ui/app/app_bottom_bar.dart:244:25: Error: No named parameter with the name 'toggleable'. toggleable: true, ^^^^^^^^^^ /C:/development/flutter/packages/flutter/lib/src/material/radio_list_tile.dart:307:9: Context: Found this candidate, but the arguments don't match. const RadioListTile({ ^^^^^^^^^^^^^

    Compiler message: lib/ui/app/app_bottom_bar.dart:244:25: Error: No named parameter with the name 'toggleable'. toggleable: true, ^^^^^^^^^^ /C:/development/flutter/packages/flutter/lib/src/material/radio_list_tile.dart:307:9: Context: Found this candidate, but the arguments don't match. const RadioListTile({ ^^^^^^^^^^^^^ Target kernel_snapshot failed: Exception: Errors during snapshot creation: null build failed.

    FAILURE: Build failed with an exception.

    • Where: Script 'C:\development\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 882

    • What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'.

    Process 'command 'C:\development\flutter\bin\flutter.bat'' finished with non-zero exit value 1

    • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

    • Get more help at https://help.gradle.org

    BUILD FAILED in 1m 49s Exception: Gradle task assembleDebug failed with exit code 1

    Reviewed by jesulo at 2020-07-13 22:36
  • 11. Dashboard not loading

    I have the latest version of the Android app and Self Host of Invoice Ninja. I thought the Dashboard feature was not implemented yet until I saw a screenshot in this issue: https://github.com/invoiceninja/flutter-mobile/issues/20#issue-339615970

    My Dashboard never loads and just shows the loading icon forever:

    screenshot

    I am using Android 7 on a Moto X Pure edition.

    Reviewed by blizzardengle at 2018-08-28 16:09
  • 12. Desktop app out of bounds

    Hi Team,

    When minimizing the desktop app en open in up again the app is out of bounds..

    This is what it should be.. image

    Below is after minimizing and opening it again.

    image

    Reviewed by sitenzo at 2022-08-10 02:32
  • 13. Google GMS in F-Droid build

    Ref: https://gitlab.com/fdroid/fdroiddata/-/jobs/2830921707 for https://github.com/invoiceninja/admin-portal/releases/tag/v5.0.91

    # gradle :app:dependencies --configuration releaseRuntimeClasspath
    ...
    +--- project :smart_auth
    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10 (*)
    |    +--- com.google.android.gms:play-services-auth:20.1.0
    |    |    +--- androidx.fragment:fragment:1.0.0 -> 1.3.4 (*)
    |    |    +--- androidx.loader:loader:1.0.0 (*)
    |    |    +--- com.google.android.gms:play-services-auth-api-phone:18.0.1
    |    |    |    +--- com.google.android.gms:play-services-base:18.0.1
    |    |    |    |    +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
    |    |    |    |    +--- androidx.core:core:1.2.0 -> 1.8.0 (*)
    |    |    |    |    +--- androidx.fragment:fragment:1.0.0 -> 1.3.4 (*)
    |    |    |    |    +--- com.google.android.gms:play-services-basement:18.0.0
    |    |    |    |    |    +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
    |    |    |    |    |    +--- androidx.core:core:1.2.0 -> 1.8.0 (*)
    |    |    |    |    |    \--- androidx.fragment:fragment:1.0.0 -> 1.3.4 (*)
    |    |    |    |    \--- com.google.android.gms:play-services-tasks:18.0.1
    |    |    |    |         \--- com.google.android.gms:play-services-basement:18.0.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-basement:18.0.0 (*)
    |    |    |    \--- com.google.android.gms:play-services-tasks:18.0.1 (*)
    |    |    +--- com.google.android.gms:play-services-auth-base:18.0.1
    |    |    |    +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
    |    |    |    +--- com.google.android.gms:play-services-base:18.0.1 (*)
    |    |    |    +--- com.google.android.gms:play-services-basement:18.0.0 (*)
    |    |    |    \--- com.google.android.gms:play-services-tasks:18.0.1 (*)
    |    |    +--- com.google.android.gms:play-services-base:18.0.1 (*)
    |    |    +--- com.google.android.gms:play-services-basement:18.0.0 (*)
    |    |    \--- com.google.android.gms:play-services-tasks:18.0.1 (*)
    |    +--- com.google.android.gms:play-services-auth-api-phone:18.0.1 (*)
    |    \--- io.flutter:flutter_embedding_release:1.0.0-6ba2af10bb05c88a2731482cedf2cfd11cf5af0b (*)
    ...
    
    Reviewed by licaon-kter at 2022-08-09 08:42
  • 14. Add sum of spended time on project overvieuw.

    Hi,

    On a project you can set budgeted hours. When i create a task i can see how many hours i have spend on a task.

    Is it possible to add the sum of all taks that are assigned to a project as a field we can add? (i mean on the table instead of the task) Than you can manage the project better. It is the "Total" field if you click on a project.

    Instead of clicking on a project you can see how all projects are doing with the hours.

    Thanks

    Reviewed by sitenzo at 2022-08-05 13:11
  • 15. Add custom field (input type)

    Hi,

    Is it possible to add a input type on custom fields with time? Now i use “single line text”, but want to insert a budgeted time for a task with a time field. There is no time field yet, is it possible to implement this?

    Thanks

    Reviewed by sitenzo at 2022-08-05 13:04
  • 16. Choose template to use when emailing multiple invoices at once

    When you have a series of invoices you want to email at once, you can use the check boxes to select multiples of invoices then click Send Email. This is great, but it only uses the initial email template for all of them and doesn't give you the option to choose which template you want to use.

    If you want to use a different template, you are forced to go into each invoices and choose the template you want (eg. Third Reminder).

    It would be great to be able to choose the template you want to use when sending a multiple selection of invoices.

    For example, lets say I have several past due invoices for a client and I want to select all of them with the check boxes and choose the "First reminder" or even "Custom reminder" template to send for all of the invoices I have selected.

    Reviewed by mrkylegp at 2022-08-04 01:29
  • 17. Email template selection drop down shown as blank

    When sending emails sometimes (in this case for the third time), Invoice ninja shows that my third template is going to be sent but the drop down is blank. It's almost not possible to tell there is a selection box there (see photo).

    Expected behavior is that it would show "Third Reminder" in the drop down corresponding to the template about to be sent.

    This used to work normally but something changed in the last few updates and now it's possible for the drop down to become blank as you can see in the photo:

    Screenshot 2022-08-03 084052

    Reviewed by mrkylegp at 2022-08-02 22:44

Related

Just a jellyfin client made in flutter (side project quality code)
Just a jellyfin client made in flutter (side project quality code)

jellyflut A jellyfin client made in Flutter It's a beta, it works okay. You can : Play a video Read a book Listen Music Look photos SQLite to have log

Aug 10, 2022
An eventual FIBS client written in Flutter and hosted on the web
An eventual FIBS client written in Flutter and hosted on the web

fibscli An eventual FIBS client written in Flutter and hosted on the web. status Currently, the app works as a stand-alone backgammon game w/o connect

Feb 23, 2022
Native Dart client library for DBus

A native Dart client implementation of D-Bus. Accessing a remote object using dart-dbus The easiest way to get started is to use dart-dbus to generate

Jul 17, 2022
❄️ An extension based Anime & Manga client.
❄️ An extension based Anime & Manga client.

Yukino Yukino lets you read manga or stream anime ad-free from multiple sources. The project's name "Yukino" meaning "Snow" named after the character

Aug 11, 2022
Flutter Installer is an installer for Flutter built with Flutter 💙😎✌
Flutter Installer is an installer for Flutter built with Flutter 💙😎✌

Flutter Installer Flutter Installer is an installer for Flutter built with Flutter ?? ?? ✌ Flutter and the related logo are trademarks of Google LLC.

Aug 11, 2022
A nice clean Portfolio Website for Designer or developers Built Using Flutter
A nice clean Portfolio Website for Designer or developers Built Using Flutter

A Portfolio Website - Flutter Web Watch it on YouTube This UI is not Responsive A nice clean Portfolio Website for Designer or developers. Which inclu

Nov 3, 2021
Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem.
Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem.

Serverpod Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem. It allows you to write your server-s

Aug 16, 2022
A lightweight personal portfolio website template built using Flutter

Dev Portfolio Software Developer Portfolio Template that helps you showcase your

Jul 17, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Aug 15, 2022
Flutter plugin for Flutter desktop(macOS/Linux/Windows) to change window size.

desktop_window Flutter plugin for Flutter desktop(macOS/Linux/Windows) to change window size. Usage import 'package:desktop_window/desktop_window.dart

Aug 15, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

Aug 1, 2022
Fluttern is a web app made with Flutter to list Flutter internships/jobs for the community.

Fluttern Fluttern is a web app made with Flutter to list Flutter internships/jobs for the community. It uses Google Sheet as a backend, simplifying th

Jan 5, 2022
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.

go-flutter - A package that brings Flutter to the desktop Purpose Flutter allows you to build beautiful native apps on iOS and Android from a single c

Aug 17, 2022
A clean front-end plugin to Volumio, the Linux distribution for music playback. Volumio Touch Display Lite is written in Flutter and runs on flutter-pi.
A clean front-end plugin to Volumio, the Linux distribution for music playback. Volumio Touch Display Lite is written in Flutter and runs on flutter-pi.

EN | 中文 Touch Display Lite plugin for Volumio 3 Feng Zhou, 2021-12 Touch Display Lite is a clean and fast user interface for Volumio 3, the Linux dist

Jul 26, 2022
Ubuntu-flutter-plugins - A collection of Flutter plugins and packages for Ubuntu applications.

Flutter plugins for Ubuntu A collection of Flutter plugins and packages for Ubuntu applications. ubuntu_localizations - provides localizations for Flu

Jun 18, 2022
File picker plugin for Flutter, compatible with mobile (iOS & Android), Web, Desktop (Mac, Linux, Windows) platforms with Flutter Go support.
File picker plugin for Flutter, compatible with mobile (iOS & Android), Web, Desktop (Mac, Linux, Windows) platforms with Flutter Go support.

A package that allows you to use the native file explorer to pick single or multiple files, with extensions filtering support.

Aug 14, 2022
Flutter Community Plus Plugins
Flutter Community Plus Plugins

Flutter Community Plus Plugins Plus plugins PlusPlugins is a set of Flutter plugins that is developed based on existing Flutter plugins with extra fun

Aug 9, 2022
Flutter plugin to store data behind biometric authentication (ie. fingerprint)

biometric_storage Encrypted file store, optionally secured by biometric lock for Android, iOS, MacOS and partial support for Linux, Windows and Web. M

Aug 12, 2022
The Chicago widget set for Flutter
The Chicago widget set for Flutter

Chicago widget library The Chicago widget set is a retro 32-bit desktop design language for Flutter. It was discussed in the Building a desktop design

Aug 6, 2022