Skip to main content

Flutter but Python

Project description

Flut

Flutter, but in Python

Status

This project is in Technical Preview.

  • APIs are subject to change.
  • Not ready for production use.

Installation

pip install flut

That's it! Windows (x64), macOS (x64, arm64), and Linux (x64) have prebuilt wheels.

You can build from source as well, you will need the Flutter SDK installed.

Usage

Create a file app.py:

from flut import run_app
from flut.flutter.widgets import StatelessWidget, StatefulWidget, State, Text, Center, Column, Icon, MainAxisAlignment
from flut.flutter.material import MaterialApp, Scaffold, AppBar, FloatingActionButton, Icons, ThemeData, ColorScheme, Colors, Theme


class MyApp(StatelessWidget):
    def build(self, context):
        return MaterialApp(
            title="Flut Demo",
            theme=ThemeData(
                colorScheme=ColorScheme.fromSeed(seedColor=Colors.deepPurple),
            ),
            home=MyHomePage(title="Flut Demo Home Page"),
        )


class MyHomePage(StatefulWidget):
    def __init__(self, title):
        super().__init__()
        self.title = title

    def createState(self):
        return _MyHomePageState()


class _MyHomePageState(State[MyHomePage]):
    def initState(self):
        self._counter = 0

    def _incrementCounter(self):
        def _update():
            self._counter += 1

        self.setState(_update)

    def build(self, context):
        return Scaffold(
            appBar=AppBar(
                title=Text(self.widget.title),
                backgroundColor=Theme.of(context).colorScheme.inversePrimary,
            ),
            body=Center(
                child=Column(
                    mainAxisAlignment=MainAxisAlignment.center,
                    children=[
                        Text("You have pushed the button this many times:"),
                        Text(
                            f"{self._counter}",
                            style=Theme.of(context).textTheme.headlineMedium,
                        ),
                    ],
                ),
            ),
            floatingActionButton=FloatingActionButton(
                onPressed=self._incrementCounter,
                tooltip="Increment",
                child=Icon(Icons.add),
            ),
        )


if __name__ == "__main__":
    run_app(MyApp())

Run it:

python app.py

For async support:

import asyncio
from flut import run_app_async

# ... your app code ...

if __name__ == "__main__":
    asyncio.run(run_app_async(MyApp()))

Development Setup

cd flut/.flutter flutter build windows/macos/linux --no-tree-shake-icons

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flut-0.0.0a10.tar.gz (399.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

flut-0.0.0a10-py3-none-win_amd64.whl (11.6 MB view details)

Uploaded Python 3Windows x86-64

flut-0.0.0a10-py3-none-manylinux1_x86_64.whl (15.4 MB view details)

Uploaded Python 3

flut-0.0.0a10-py3-none-macosx_10_14_universal2.whl (51.4 MB view details)

Uploaded Python 3macOS 10.14+ universal2 (ARM64, x86-64)

File details

Details for the file flut-0.0.0a10.tar.gz.

File metadata

  • Download URL: flut-0.0.0a10.tar.gz
  • Upload date:
  • Size: 399.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flut-0.0.0a10.tar.gz
Algorithm Hash digest
SHA256 beb837020440495b63c02c22f8c35dc4cea3c2974167c260c35bb9b3ef1e58b5
MD5 c9f5c52e7031cf681d7ca82b398e2a7b
BLAKE2b-256 4199dca771b39ac22eac7423493ff6153958cffa75abb1c3f30e0f693681d894

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a10.tar.gz:

Publisher: publish.yml on yangyuan/flut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flut-0.0.0a10-py3-none-win_amd64.whl.

File metadata

  • Download URL: flut-0.0.0a10-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flut-0.0.0a10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 78adc18f742067d4e4d573d00aa141d111a07db1682f390c4c7a78a1ff905188
MD5 19ea7a12360d1c2c03fdf4ba55e04621
BLAKE2b-256 f778e611202f5cc0592af604c494285daa393b79fea2c334f0b681e87ee635fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a10-py3-none-win_amd64.whl:

Publisher: publish.yml on yangyuan/flut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flut-0.0.0a10-py3-none-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for flut-0.0.0a10-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bbd9545b2fa17ed3e168f4f266ae3b1018b0834761a253aecba1e975a62c2dea
MD5 37bfd5f21e9ded2b404fa4ca5a44a049
BLAKE2b-256 a987f68bff1b20b79605ee5fc55c28285ce12adb91cfe7ae08587ac39174d354

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a10-py3-none-manylinux1_x86_64.whl:

Publisher: publish.yml on yangyuan/flut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flut-0.0.0a10-py3-none-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for flut-0.0.0a10-py3-none-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 2e3a0190e0fa1bf66795ce3989bb396fbf0dec6639c304694d65f3162017ed84
MD5 1d6ff4d0af5c863e418f1c213a1a9bd7
BLAKE2b-256 c1b48bfb3a0cf816c755925915fa6f315f4469c6974adb638b8828da0b2d1276

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a10-py3-none-macosx_10_14_universal2.whl:

Publisher: publish.yml on yangyuan/flut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page