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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

File metadata

  • Download URL: flut-0.0.0a9.tar.gz
  • Upload date:
  • Size: 393.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.0a9.tar.gz
Algorithm Hash digest
SHA256 5b44078c020930455d155c59084f929929bde543ba0ce4fbba5c039acdea87a6
MD5 67754a8ef57f2d26c107a0bc46dfae53
BLAKE2b-256 376e154913f67b4512f9a5f1f38278e203a8ed349429d0416017f179d1ce913d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: flut-0.0.0a9-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.0a9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 34dca19c86217b76975c079928cef697a4512a562203b08cc90316b28212d278
MD5 820a5e7dfea9d2f1212bb82043eea6a5
BLAKE2b-256 97656593d52ef88d4a56d3ccc51ae6451fbd8d9a76952be96731cf07ce46602e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flut-0.0.0a9-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6794e7639f5b6fca5df54246d43616b2bed458839a254c861c002ecef8cd6723
MD5 5892796f884465b3d9995f1ab8fd01eb
BLAKE2b-256 1c724826b36cf1ad9a2c9533229bc18d5253ba0c6a2eb145ded7788ae1b3f587

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flut-0.0.0a9-py3-none-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 3de775fb7ae5e884b99f504deb86d484931a3e816c9fe1aa81fdf33fd22b0b11
MD5 1627dcde6ac647c5c8e6282e05ff069c
BLAKE2b-256 a882dffe0a9c8558f85f90c36458a3fee61816691698672f51dd845b1584fe96

See more details on using hashes here.

Provenance

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