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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

File metadata

  • Download URL: flut-0.0.0a6.tar.gz
  • Upload date:
  • Size: 385.7 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.0a6.tar.gz
Algorithm Hash digest
SHA256 397ff197736e3e52e6af9919a6a5202becf76ba681527e0f1d2fb67c68dee15b
MD5 231f8a907f1d61edf763278095aaa4c6
BLAKE2b-256 3c5a401ed1ce01a6f8d3a5904d276f596b13545e15fac135d39081e237978a0d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: flut-0.0.0a6-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.0a6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ed56b5643452c98a9de0bfa72faf440c045051728cb988e6022ead2ce8579a7a
MD5 819e505d0832496e1d2da12d215449b6
BLAKE2b-256 e757e4c77ca3bb67856e73954ab0e30f7f540d41e48f46a9b59113e66b3b0a67

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flut-0.0.0a6-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b8e4c8505c4b6f3ac8678f03b36a8dedb844827de8727cb1491489f8ee441bc8
MD5 455479890c931d1557ad9b173776f302
BLAKE2b-256 576987ba62670609874b7f6595515209c0c21ca22daeb8a41901dc65c458552e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flut-0.0.0a6-py3-none-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 9c87afcc6ad2f0f0f7e290b40fbf6f6338d480adbde5eda46cceebd6b45575f0
MD5 959a09e77e64e0c0fc965fc2c08004f6
BLAKE2b-256 cff81908ecd9ed4ef3c570744ba144a75fed084f7a5b52f19866a6417d470017

See more details on using hashes here.

Provenance

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