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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

flut-0.0.0a7-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.0a7.tar.gz.

File metadata

  • Download URL: flut-0.0.0a7.tar.gz
  • Upload date:
  • Size: 387.3 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.0a7.tar.gz
Algorithm Hash digest
SHA256 a37fbb93503fe218537ddd369407bb154f959b3f2c37f3a01e508bf6a20db951
MD5 54a7947b8a56693478af666f5b4cc4ac
BLAKE2b-256 8e7407edfe04ae464a370029cdbd68cae1ea8a5104ec45b0b74742615be35e73

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: flut-0.0.0a7-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.0a7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a35ef4b6c8e0ec22f8942b0b5bcbb971d86900f0659fe47ec20d62b5210ab5bd
MD5 fb01caf50b3e3c82e858a51d64e72988
BLAKE2b-256 232ccc9020605c85158c6c2471ff8d4fb574febd6eebb021ffeb00cbfb29bed0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flut-0.0.0a7-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3a86fa842f3fc40100778068dc557770b8a55eec50c8bd23ea643a2b45d0abff
MD5 a8d87f7de8cb90539a6a160ada4a46a1
BLAKE2b-256 dae2afc3dd48ab7c43c39eacc885b69b7cdd0a2a8a90ab6703e7fe694f2315bc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flut-0.0.0a7-py3-none-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 f5dd103fe14a47d2d6fcf4ef4c152dd7f5ee5bca3662956ae08c7ebcddacab63
MD5 5fd773cfe16f6575241b81fcea0c41e4
BLAKE2b-256 29e52292fd37c9d1c3fdf643371a9609b020726e93f0cbc289e1744744894eeb

See more details on using hashes here.

Provenance

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