flet-dev / flet

Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required.
https://flet.dev
Apache License 2.0
11.56k stars 452 forks source link

fix: wrap ListTile in material widget #4206

Closed OwenMcDonnell closed 4 weeks ago

OwenMcDonnell commented 1 month ago

Description

As mentioned in flutter docs ListTile

...requires a Material widget ancestor in the tree to paint itself on, which is typically provided by the app's Scaffold. The tileColor, selectedTileColor, focusColor, and hoverColor are not painted by the ListTile itself but by the Material widget ancestor.

Fixes #4095

Test Code

import flet as ft

def main(page: ft.Page):

    page.add(
        ft.Container(
            shadow=ft.BoxShadow(color=ft.colors.PINK_400, blur_radius=10),
            border=ft.Border(
                top=ft.BorderSide(width=2, color=ft.colors.GREY_200),
                bottom=ft.BorderSide(width=2, color=ft.colors.GREY_200),
                right=ft.BorderSide(width=2, color=ft.colors.GREY_200),
                left=ft.BorderSide(width=2, color=ft.colors.GREY_200),
            ),
            border_radius=5,
            bgcolor="green",
            content=ft.ListTile(
                bgcolor="blue",
                selected=False,
                title=ft.Text('This is a test'),
                hover_color='red',
                on_click=lambda e: print('Test')
            )
        )
    )

ft.app(target=main)

Type of change

Checklist:

ClearSafety commented 3 weeks ago

Thank you for attending to this issue ticket. I'm not sure I understood the solution. According to what was mentioned in the 'Description', ListTile requires a material ancestor to manage colours. Does Flet provides any control that could work as material ancestor for ListTile to deal with its colours renderization?

ndonkoHenri commented 3 weeks ago

@ClearSafety try the latest pre-release: pip install flet --pre -U Simply rerun your app and let us know. Don't mind the description.

ClearSafety commented 3 weeks ago

@ndonkoHenri I did it and got the version 0.25.0.dev3614. But for some reason, when I try to run the app, it arises an error in Terminal. When I come back to the version 0.24.1, the app run smothely.

WARNING: Failed to write executable - trying to use .deleteme logic Traceback (most recent call last): File "", line 198, in run_module_as_main File "", line 88, in run_code File "C:\Users\RafaelOliveira\AppData\Local\Programs\Python\Python312\Scripts\flet.exe_main.py", line 7, in File "C:\Users\RafaelOliveira\AppData\Local\Programs\Python\Python312\Lib\site-packages\flet\cli.py", line 24, in main flet_cli.cli.main() File "C:\Users\RafaelOliveira\AppData\Local\Programs\Python\Python312\Lib\site-packages\flet_cli\cli.py", line 88, in main args.handler(args) File "C:\Users\RafaelOliveira\AppData\Local\Programs\Python\Python312\Lib\site-packages\flet_cli\commands\run.py", line 144, in handle from flet_desktop import close_flet_view File "C:\Users\RafaelOliveira\AppData\Local\Programs\Python\Python312\Lib\site-packages\flet_desktop_init.py", line 14, in from flet_core.utils import ( ImportError: cannot import name 'get_arch' from 'flet_core.utils' (C:\Users\RafaelOliveira\AppData\Local\Programs\Python\Python312\Lib\site-packages\flet_core\utilsinit.py)