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.0a5.tar.gz (385.0 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.0a5-py3-none-win_amd64.whl (11.5 MB view details)

Uploaded Python 3Windows x86-64

flut-0.0.0a5-py3-none-manylinux1_x86_64.whl (15.3 MB view details)

Uploaded Python 3

flut-0.0.0a5-py3-none-macosx_10_14_universal2.whl (50.7 MB view details)

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

File details

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

File metadata

  • Download URL: flut-0.0.0a5.tar.gz
  • Upload date:
  • Size: 385.0 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.0a5.tar.gz
Algorithm Hash digest
SHA256 559cdf44abba8e12c476392897720a919c7aebf812e0e595903fb0165651c329
MD5 053181e8ae82afbf3b08a0ad2c965133
BLAKE2b-256 295813f44f916b2e66d33027d7dfc9a53656126e91e739667e48ebb34d221a1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a5.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.0a5-py3-none-win_amd64.whl.

File metadata

  • Download URL: flut-0.0.0a5-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.5 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.0a5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3433adedd21ca44f952f74657f7af9d49b60ec269ad7789c1ca800830872178a
MD5 1a00320f7ccc40e4763b397a8d81c422
BLAKE2b-256 5d318b8f0a3cd9a92aca2c2bf263779a9779354cdb1e4e3254e7bff6b3d06a10

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a5-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.0a5-py3-none-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for flut-0.0.0a5-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a0b07e501931e26d30c1084527cfb98525e1e6214b90d45b0a1855578edde7ff
MD5 e78f649717ac6e3be50288ad7acb21d2
BLAKE2b-256 c548756693df4374d8e74507ddd00782fc740f2869d6b8682e4b63a6b767c53f

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a5-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.0a5-py3-none-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for flut-0.0.0a5-py3-none-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 f64fb92d874b65939cbdcf5aa524c91c69fb57833705004e4cfd9ec6fdb9a4a8
MD5 ea94e41467ac0036c28fda3c268e5a78
BLAKE2b-256 e0e6aab72622937aa984c240f73e4cac15a879d95062ea1010cb112cf58b3001

See more details on using hashes here.

Provenance

The following attestation bundles were made for flut-0.0.0a5-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