Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required.

Related tags

Templates flet
Overview

Flet

Build status

Flet is a framework that enables you to easily build realtime web, mobile and desktop apps in your favorite language and securely share them with your team. No frontend experience required.

From idea to app in minutes

An internal tool or a dashboard for your team, weekend project, data entry form, kiosk app or high-fidelity prototype - Flet is an ideal framework to quickly hack a great-looking interactive apps to serve a group of users.

📐 Simple architecture

No more complex architecture with JavaScript frontend, REST API backend, database, cache, etc. With Flet you just write a monolith stateful app in Python only and get multi-user, realtime Single-Page Application (SPA).

🔋 Batteries included

To start developing with Flet, you just need your favorite IDE or text editor. No SDKs, no thousands of dependencies, no complex tooling - Flet has built-in web server with assets hosting and desktop clients.

   Powered by Flutter

Flet UI is built with Flutter, so your app looks professional and could be delivered to any platform. Flet simplifies Flutter model by combining smaller "widgets" to ready-to-use "controls" with imperative programming model.

🌐 Speaks your language

Flet is language-agnostic, so anyone on your team could develop Flet apps in their favorite language. Python is already supported, Go, C# and others are coming next.

📱 Deliver to any device

Deploy Flet app as a web app and view it in a browser. Package it as a standalone desktop app for Windows, macOS and Linux. Install it on mobile as PWA or view via Flet app for iOS and Android.

Flet app example

At the moment you can write Flet apps in Python and other languages will be added soon.

Here is a sample "Counter" app:

import flet
from flet import IconButton, Page, Row, TextField, icons

def main(page: Page):
    page.title = "Flet counter example"
    page.vertical_alignment = "center"

    txt_number = TextField(value="0", text_align="right", width=100)

    def minus_click(e):
        txt_number.value = int(txt_number.value) - 1
        page.update()

    def plus_click(e):
        txt_number.value = int(txt_number.value) + 1
        page.update()

    page.add(
        Row(
            [
                IconButton(icons.REMOVE, on_click=minus_click),
                txt_number,
                IconButton(icons.ADD, on_click=plus_click),
            ],
            alignment="center",
        )
    )

flet.app(target=main)

To run the app install flet module:

pip install flet

and run the program:

python counter.py

The app will be started in a native OS window - what a nice alternative to Electron!

Now, if you want to run the app as a web app, just replace the last line with:

flet.app(target=main, view=flet.WEB_BROWSER)

run again and now you instantly get a web app:

Getting started

Sample apps in Python

Community

Comments
  • Old flet client app versions do not launch on Mac

    Old flet client app versions do not launch on Mac

    Have repeatedly seen the following behavior on Mac:

    • I get this error when trying to launch a flet app in "local app mode":

      The application cannot be opened for an unexpected reason, error=Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x60000374d650 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}

    • Web mode works normally.

    • When I check flet version, I see that there is a new version available.

    • After upgrading to latest version, app launches normally.

    While this is in a way great, as it keeps me motivated to quickly upgrade to the latest version, it is not good for stable application use.

    Speculation: Mac only considers the latest flet Flutter client app valid.

    Would be great if anyone else using a Mac could verify this behavior.

    opened by mikaelho 31
  • OSError: [WinError 123] When trying example program

    OSError: [WinError 123] When trying example program

    Description The example program crashes at startup. It seems from the traceback that file locations/addresses are not handled correctly somewhere.

    Code example to reproduce the issue: Litterally the example program from the wiki

    import flet
    from flet import IconButton, Page, Row, TextField, icons
    
    
    def main(page: Page):
        page.title = "Flet counter example"
        page.vertical_alignment = "center"
    
        txt_number = TextField(value="0", text_align="right", width=100)
    
        def minus_click(e):
            txt_number.value = int(txt_number.value) - 1
            page.update()
    
        def plus_click(e):
            txt_number.value = int(txt_number.value) + 1
            page.update()
    
        page.add(
            Row(
                [
                    IconButton(icons.REMOVE, on_click=minus_click),
                    txt_number,
                    IconButton(icons.ADD, on_click=plus_click),
                ],
                alignment="center",
            )
        )
    
    
    if __name__ == '__main__':
        flet.app(target=main)
    

    Describe the results you received: Crash with following trace :

      File "C:\Users\User\Miniconda3\Scripts\flet-script.py", line 9, in <module>
        sys.exit(main())
      File "C:\Users\User\Miniconda3\lib\site-packages\flet\flet.py", line 668, in main
        my_observer.start()
      File "C:\Users\User\Miniconda3\lib\site-packages\watchdog\observers\api.py", line 262, in start
        emitter.start()
      File "C:\Users\User\Miniconda3\lib\site-packages\watchdog\utils\__init__.py", line 93, in start
        self.on_thread_start()
      File "C:\Users\User\Miniconda3\lib\site-packages\watchdog\observers\read_directory_changes.py", line 67, in on_thread_start
        self._handle = get_directory_handle(self.watch.path)
      File "C:\Users\User\Miniconda3\lib\site-packages\watchdog\observers\winapi.py", line 316, in get_directory_handle
        return CreateFileW(path, FILE_LIST_DIRECTORY, WATCHDOG_FILE_SHARE_FLAGS,
      File "C:\Users\User\Miniconda3\lib\site-packages\watchdog\observers\winapi.py", line 112, in _errcheck_handle
        raise ctypes.WinError()
    OSError: [WinError 123] La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
    C:\Users\User\Miniconda3\python.exe: can't open file 'C:\\Users\\User\\OneDrive - MyDrive\\Documents\\Tests\\test\\http:\\127.0.0.1:57010': [Errno 22] Invalid argument
    

    Describe the results you expected: The program shouldn't have crashed and the window should have opened ?

    Additional information you deem important (e.g. issue happens only occasionally): If I change the line to make it a browser app, it works without issue

    Flet version (pip show flet):

    0.1.62
    

    Operating system: Windows 10 x64 Version 10.0.19044 Build 19044

    Additional environment details: Was using PyCharm IDE

    bug 
    opened by redace0001 23
  • Missing overflow control?

    Missing overflow control?

    With this code:

    import flet
    from flet import Column, Container, Page, border, colors
    
    def main(page: Page):
    
        root = Container(border=border.all(3, colors.BLACK), expand=True)
    
        content = Column([Container(bgcolor=colors.GREEN, height=200)], expand=True)
    
        root.content = content
    
        page.add(root)
        page.update()
    
    flet.app(target=main)
    

    The Column overflows the bottom of the Container when it does not fit.

    image

    If I add scroll="auto" to the Column, the content no longer overflows:

    image

    Is there an existing way to not overflow the containing control (not necessarily a Container), and not scroll?

    opened by mikaelho 20
  • Clipboard not storing text on iOS devices

    Clipboard not storing text on iOS devices

    Description The clipboard functionality is not working on iPhone OS devices.

    Code example to reproduce the issue: Flet-Colors-Browser repo: https://github.com/ndonkoHenri/Flet-Color-Browser Browser Link: https://flet-colors-browser.fly.dev/

    Describe the results you received: When a container is clicked, a function(in the code) is called, which copies the container's text value(a color code) to the clipboard. The clipboard doesn't seem to store copied text. We noticed this only on iOS devices for now.

    Describe the results you expected: I expect the clipboard to store the color code of a container, when this container is clicked and later on allow the user have the possibility to paste the copied text(color code) anywhere. (clipboard's basic functionalities)

    Additional information: This behavior was only noticed on iOS(for now). On MacOS and Windows we don't have this issue.

    This same Clipboard issue has also been noticed when using https://flet-icons-browser.fly.dev/ on iOS.

    Flet version: Flet 0.1.60 (latest)

    bug 
    opened by ndonkoHenri 13
  • Page.window_destroy very slow

    Page.window_destroy very slow

    import flet
    
    
    def main(page: flet.Page):
        def quit_window(e):
            page.window_destroy()
        page.add(flet.TextButton(text='quit', on_click=quit_window))
    
    
    flet.app(target=main)
    

    It takes ~5 second to destory the window, frozen during that period. Is that possible to speed up that process?

    opened by quan787 13
  • Flet does not perform window_maximized correctly on Windows 10

    Flet does not perform window_maximized correctly on Windows 10

    Flet does not perform window_maximized correctly on Windows 10. page.window_maximized = True sets the height of the window to be the height of the entire screen, instead of the height of the entire screen minus that of the taskbar; like other apps do. Also page.window_height includes the height of the window title bar (with minimize, maximize and close buttons), but there does not seem to be any way to get the height of the window title bar; as such it is difficult to size an image to the page height, especially when targeting both 4k and 720p displays.

    awaiting response 
    opened by Code4SAFrankie 12
  • make ink=True behavior consistent with ink=False

    make ink=True behavior consistent with ink=False

    Use onTapDown instead of onTap like ink = False Also: passing a dummy callback to onTap when onHover is True to enble the widget instead of passing a ws.pageEventFromWeb callback to onTap and onLongPress to reduce websocket traffic

    opened by YouJiacheng 11
  • The code architecture require improve

    The code architecture require improve

    Rencently, i road the code of this project, but I found there are several things can be done in a more beautiful way ~~Firstly, fletd will be download by the code when the first time run. however,pipy can distribute the packages for each system and architecture, so the you needn't download it by your self, just bundle them into the package, (see flet.py,line 284)~~ Secondly, the flet client has the same problem to the fletd and it will be decompression everytime that system boot on linux, because /tmp is a "ramdisk" on most linux. so, just put the uncompression client files into the package this will make it start faster In addition could you add a full api reference? (Sorry for my English)

    opened by calvinweb 10
  • Cannot start counter app right after installation

    Cannot start counter app right after installation

    % pip install flet ... % python counter.py App URL: http://127.0.0.1:64269 Connected to Flet app and handling user sessions... The application cannot be opened for an unexpected reason, error=Error Domain=NSOSStatusErrorDomain Code=-10827 "kLSNoExecutableErr: The executable is missing" UserInfo={_LSLine=3665, _LSFunction=_LSOpenStuffCallLocal}

    Python 3.10.4. Clean virtualenv (only flet installed)

    MacOS Big Sur (11.1)

    opened by sagism 10
  • Issues while importing flet using python 3.9

    Issues while importing flet using python 3.9

    Traceback (most recent call last): File "C:\Users\Administrator\Documents\TEST\crossplatformappswith_flet_and_flutter\counter.py", line 1, in import flet File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\flet_init_.py", line 1, in from flet.alert_dialog import AlertDialog File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\flet\alert_dialog.py", line 3, in from beartype import beartype File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype_init_.py", line 59, in from beartype.decor.main import beartype File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype_decor\main.py", line 22, in from beartype.typing import TYPE_CHECKING File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype\typing_init.py", line 329, in from beartype.typing._typingpep544 import ( File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype\typing_typingpep544.py", line 35, in from beartype._util.cache.utilcachecall import callable_cached File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype_util\cache\utilcachecall.py", line 33, in from beartype._util.func.arg.utilfuncargtest import ( File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype_util\func\arg\utilfuncargtest.py", line 16, in from beartype._util.func.utilfunccodeobj import get_func_codeobj File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype_util\func\utilfunccodeobj.py", line 19, in from beartype._data.datatyping import Codeobjable, TypeException File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\beartype_data\datatyping.py", line 85, in BeartypeReturn = Union[BeartypeableT, BeartypeConfedDecorator] File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\typing.py", line 243, in inner return func(*args, **kwds) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\typing.py", line 316, in getitem return self._getitem(self, parameters) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\typing.py", line 421, in Union parameters = _remove_dups_flatten(parameters) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\typing.py", line 215, in _remove_dups_flatten all_params = set(params) TypeError: unhashable type: 'list'

    opened by snehccurry 10
  • Upload files with file picker

    Upload files with file picker

    https://pub.dev/packages/file_picker https://stackoverflow.com/questions/58793993/how-to-convert-uint8list-image-to-file-image-for-upload-in-flutter-web https://stackoverflow.com/questions/56252856/how-to-pick-files-and-images-for-upload-with-flutter-web

    https://stackoverflow.com/a/51195811/1435891 https://github.com/miguelpruivo/flutter_file_picker/wiki/FAQ https://gin-gonic.com/docs/examples/upload-file/single-file/ https://www.codegrepper.com/code-examples/whatever/Upload+multiple+images+in+flutter+by+multipart https://gist.github.com/FeodorFitsner/d1fcc9b8cfd53ebd7f6a29f4d5176d59

    enhancement 
    opened by FeodorFitsner 8
  • Add support for AutoComplete

    Add support for AutoComplete

    Please Describe The Problem To Be Solved Flutter has an AutoComplete feature, https://api.flutter.dev/flutter/material/Autocomplete-class.html

    Please add support for it.

    opened by SimplicityGuy 0
  • Page configuration in a separate class.

    Page configuration in a separate class.

    I've implemented a meta classes and a new method for handling basic page configuration for different purposes.

    Here is a quick example:

    import flet as ft
    from flet import BaseConfig
    
    class WindowsWindowConfig(BaseConfig):
        theme=ft.Theme(color_scheme_seed='green')
        on_resize='on_resize'
        window_minimizable=False
    
    class AndroidWindowConfig(BaseConfig):
        window_height=600
        window_width=400
    
    
    def main(page: ft.Page):
        if page.platform == 'windows':
            page.from_config(WindowsWindowConfig)
        elif page.platform == 'android':
            page.from_config(AndroidWindowConfig)
        
        page.add(ft.Text("Hello Word"))
        page.add(ft.Text(page.platform))
    
    ft.app(target=main)
    

    Details

    New file and a method

    • There is a new Python file named metaconfig.py which consists of a meta class and a class inheriting from the metaclass. Those are Meta and BaseConfig
    • There is a new method in the Page class named from_config(config: Type[BaseConfig]) which takes a class that inherits from BaseConfig and has page attributes

    How to use

    As shown in the example above, you

    • At first, must create a class and inherit from BaseConfig
    • You can include any properties, method or events from Page docs, there are no hardcoded values
    • At last, pass your class as an argument to page.from_config() method and you're good to go

    Use cases

    • You may want to have different page configurations for different platforms
    • You may want to use different page configuration for a production and a development server which you can define beforehand
    • You may want to have configuration settings in a separate file to maintain a clean code
    • While testing, you may need to deal with different configuration modes and you don't need to rewrite everything from scratch

    Note:

    You can also have methods inside of those classes as far as they have @staticmethod decorator and they don't have to access a page object directly.

    Methods must be passed as string to variables

    class WindowsWindowConfig(BaseConfig):
        theme=ft.Theme(color_scheme_seed='green')
        on_resize='on_resize'
        window_minimizable=False
        on_resize="on_resize"
        
        @staticmethod
        def on_resize(e):
            print("Page has been resized")
    
    
    opened by StanMathers 0
  • Replace update method with reactivity

    Replace update method with reactivity

    Please Describe The Problem To Be Solved When a control or the page needs to be updated, it must be done manually by calling the "update()" method, which could lead to calling the update method that does not correspond to the control that needs to be updated or skip calling this method after any data update.

    import flet as ft
    
    def main(page: ft.Page):
        def add_clicked(e):
            page.add(ft.Checkbox(label=new_task.value))
            new_task.value = ""
            page.update()
    
        new_task = ft.TextField(hint_text="Whats needs to be done?")
    
        page.add(new_task, ft.FloatingActionButton(icon=ft.icons.ADD, on_click=add_clicked))
    
    ft.app(target=main)
    

    (Optional): Suggest A Solution My suggestion is to replace the need of calling the "update" method and bring reactivity (for example, with reactive attributes), so the data updates automatically after any event. Which is where the trends of these UI libraries/frameworks tend to go. Other UI framework such as Flutter and Jetpack Compose already do, including a TUI library for Python named "Textual".

    Python with Textual (Example and simple explanation of reactive attributes):

    from time import monotonic
    
    from textual.app import App, ComposeResult
    from textual.containers import Container
    from textual.reactive import reactive
    from textual.widgets import Button, Header, Footer, Static
    
    
    class TimeDisplay(Static):
        """A widget to display elapsed time."""
    
        start_time = reactive(monotonic)
        time = reactive(0.0)
    
        def on_mount(self) -> None:
            """Event handler called when widget is added to the app."""
            self.set_interval(1 / 60, self.update_time)
    
        def update_time(self) -> None:
            """Method to update the time to the current time."""
            self.time = monotonic() - self.start_time
    
        def watch_time(self, time: float) -> None:
            """Called when the time attribute changes."""
            minutes, seconds = divmod(time, 60)
            hours, minutes = divmod(minutes, 60)
            self.update(f"{hours:02,.0f}:{minutes:02.0f}:{seconds:05.2f}")
    
    
    class Stopwatch(Static):
        """A stopwatch widget."""
    
        def on_button_pressed(self, event: Button.Pressed) -> None:
            """Event handler called when a button is pressed."""
            if event.button.id == "start":
                self.add_class("started")
            elif event.button.id == "stop":
                self.remove_class("started")
    
        def compose(self) -> ComposeResult:
            """Create child widgets of a stopwatch."""
            yield Button("Start", id="start", variant="success")
            yield Button("Stop", id="stop", variant="error")
            yield Button("Reset", id="reset")
            yield TimeDisplay()
    
    
    class StopwatchApp(App):
        """A Textual app to manage stopwatches."""
    
        CSS_PATH = "stopwatch04.css"
        BINDINGS = [("d", "toggle_dark", "Toggle dark mode")]
    
        def compose(self) -> ComposeResult:
            """Create child widgets for the app."""
            yield Header()
            yield Footer()
            yield Container(Stopwatch(), Stopwatch(), Stopwatch())
    
        def action_toggle_dark(self) -> None:
            """An action to toggle dark mode."""
            self.dark = not self.dark
    
    
    if __name__ == "__main__":
        app = StopwatchApp()
        app.run()
    

    Jetpack Compose:

    @Composable
    fun App() {
        var text by remember { mutableStateOf("Hello, World!") }
    
        MaterialTheme {
            Column(
                modifier = Modifier.fillMaxSize(),
                verticalArrangement = Arrangement.Center,
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
               Button(onClick = {
                text = "Hello, Desktop!"
               }) {
                   Text(text)
                }
            }
        }
    }
    

    Flutter:

    class RandomWords extends StatefulWidget {
        const RandomWords({super.key});
    
        @override
        State<RandomWords> createState() => _RandomWordsState();
      }
    
    class _RandomWordsState extends State<RandomWords> {
        @override
        Widget build(BuildContext context) {
          final wordPair = WordPair.random();
          return Text(wordPair.asPascalCase);
        }
      }
    
    opened by EGAMAGZ 0
  • How to change name and icon in android ???

    How to change name and icon in android ???

    I installed 2 flet app in android, after installing the 2 icons are the same, how can i change this icon and app name? I have searched in several places how to be able to change to distinguish.

    image

    into web browser, too, how to change icon.ico?

    image

    opened by alexyucra 0
  • keep re-connecting just after starting on ubuntu 22.04

    keep re-connecting just after starting on ubuntu 22.04

    Keep re-connecting just after starting on ubuntu 22.04

    I just start a tutorial code:

    
    import flet as ft
    
    def main(page: ft.Page):
    
        page.title = "Flet counter example"
        page.vertical_alignment = ft.MainAxisAlignment.CENTER
    
        txt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)
    
        def minus_click(e):
            txt_number.value = str(int(txt_number.value) - 1)
            page.update()
    
        def plus_click(e):
            txt_number.value = str(int(txt_number.value) + 1)
            page.update()
    
        page.add(
            ft.Row(
                [
                    ft.IconButton(ft.icons.REMOVE, on_click=minus_click),
                    txt_number,
                    ft.IconButton(ft.icons.ADD, on_click=plus_click),
                ],
                alignment=ft.MainAxisAlignment.CENTER,
            )
        )
    
    ft.app(target=main,view=ft.WEB_BROWSER)
    
    

    and got :

    and keeping without ending

    debug

    And I debug step by step, the broken point at flet.py's return line:

    
        flet_env = {**os.environ}
    
        if hidden:
            flet_env["FLET_HIDE_WINDOW_ON_START"] = "true"
    
        # execute process
        return subprocess.Popen(args, env=flet_env) # line 447
    
    
    • the args:
    args
    ['/home/xxx/.flet/.../flet/flet', 'http://127.0.0.1:38273']
    special variables:
    function variables:
    0: '/home/xxx/.flet/bin/flet-0.2.4/flet/flet'
    1: 'http://127.0.0.1:38273'
    len(): 2
    

    os and package version

    • ubuntu 22.04
    • python 3.10
    • flet: 0.2.4
    opened by ChengFengGu 0
Releases(v0.2.4)
Owner
Flet
Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required.
Flet
School Project to complete a course,uses a python backend and a flutter frontend

hit_400_app Getting Started This project is a starting point for a Flutter application. #Run flutter packages get #Run the python main.py after instal

null 0 Dec 28, 2021
Intel Corporation 238 Dec 24, 2022
Another way to build Flutter applications for mobile, web and desktop using the powerful of MVC Design Pattern.

Karee Another way to build Flutter applications for mobile, web and desktop using the powerful of MVC Design Pattern. + = About Karee Karee is a frame

@LeCode 44 Sep 29, 2022
Call Kit is a prebuilt feature-rich call component, which enables you to build one-on-one and group voice/video calls into your app with only a few lines of code.

Call Kit (ZegoUIKitPrebuiltCall) Call Kit is a prebuilt feature-rich call component, which enables you to build one-on-one and group voice/video calls

ZEGOCLOUD 9 Dec 26, 2022
Just collection of UI designs build with flutter. Can run on any mobile, web & desktop.

Flutter UI Designs True cross platform app runs on web, mobile & desktop Download Requirements to run locally Flutter stable v2.0.0+ Dart VM version:

Hamza Iqbal 222 Dec 28, 2022
FlutterBoost is a Flutter plugin which enables hybrid integration of Flutter for your existing native apps with minimum efforts

中文文档 中文介绍 Release Note v3.0-preview.17 PS: Before updating the beta version, please read the CHANGELOG to see if there are any BREAKING CHANGE Flutter

Alibaba 6.3k Dec 30, 2022
Scouter is a package which was made following the goal to provide a NestJS-like experience to Dart Developers that want to develop Rest APIS

Scouter is a package which was made following the goal to provide a NestJS-like experience to Dart Developers that want to develop Rest APIS Features

Vinicius Amélio 3 Sep 12, 2022
Custom dropdown widget allows to add highly customizable widget in your projects with proper open and close animations and also comes with form required validation.

Custom Dropdown Custom Dropdown package lets you add customizable animated dropdown widget. Features Lots of properties to use and customize dropdown

Abdullah Chauhan 22 Dec 29, 2022
DEVS: Developer Board and Jobs Listing | For Developers, By Developers

devs Setup Currently, this DEVS project is using the master channel of the Flutter SDK. TODO: Migrate to beta Clone the project git clone https://gith

Flutter Philippines Community 40 Apr 16, 2022
Shortcuts and actions - Spice up your Flutter Desktop/Web apps with Shortcuts and Actions

Spice up your Flutter Desktop/Web apps with Shortcuts and Actions A desktop/web

Waleed Arshad 12 Nov 20, 2022
Build different UIs for Android, iOS, Web, Desktop, Wear, TV etc without the if/else checks in your widgets.

platform_widget_mixin Plugin to decouple widgets based on various platform properties. Features Build different UIs for Android, iOS, Web, Desktop, We

Rahul Kumar 6 Nov 17, 2022
Easily build and deploy your Dart web app to GitHub pages

Run flutter build web or dart pub run build_runner build and put the output in another branch. An easy way to update gh-pages. Install $ dart pub glob

Kevin Moore 183 Dec 20, 2022
Appwrite is a secure end-to-end backend server for Web, Mobile, and Flutter developers that is packaged as a set of Docker containers for easy deployment 🚀

A complete backend solution for your [Flutter / Vue / Angular / React / iOS / Android / *ANY OTHER*] app Appwrite 0.12 has been released! Learn what's

Appwrite 28.2k Jan 3, 2023
Trying out Flutter for desktop Web app development as an alternative to SPA frameworks (such as React and Angular) by recreating one of the pages of an existing CV Management web app

HTML Renderer Demo CanvasKit Renderer Demo Reddit discussion This repo contains a PoC of using Flutter as a traditional SPA framework for creating a d

Maxim Saplin 20 Oct 11, 2022
An open-source unofficial GitHub mobile client, that aims to deliver the ultimate GitHub experience on mobile devices.

DioHub for Github Summary Features Roadmap Support Screenshots Build Instructions Summary DioHub is an open-source unofficial GitHub mobile client, th

Naman Shergill 401 Jan 4, 2023
Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter.

Official Flutter packages for Stream Chat Quick Links Register to get an API key for Stream Chat Flutter Chat SDK Tutorial Chat UI Kit Sample apps Thi

Stream 659 Dec 25, 2022
Quickly is build as a tool to enhance your Flutter UI development experience and make code easier

Quickly is build as a tool to enhance your Flutter UI development experience and make code easier. It is highly inspired by Bootstrap and Tailwind CSS. It also provide lots of extension methods on String, List and Map.

Aniket Khote 11 Oct 24, 2022
Github-apps-flutter - Github Apps Build Using bloc 8.0 and Github API

Github_apps Inspiration This app is made to build using bloc 8.0 and github API.

Irvan Lutfi Gunawan 18 Apr 14, 2022