File size: 1,462 Bytes
386e947
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import flet as ft
from flet import TextField, ElevatedButton
from flet_core import ControlEvent
import flet_fastapi

async def main(page: ft.Page) -> None:
    page.title = "Some form"

    dlg = ft.AlertDialog(
        title=ft.Text("This doesn't work yet!"), on_dismiss=lambda e: print("Dialog dismissed!")
    )

    async def open_dlg(e: ControlEvent):
        page.dialog = dlg
        dlg.open = True
        await page.update_async()

    question: TextField = TextField(label="Question", text_align=ft.TextAlign.LEFT, width=200)
    answer: TextField = TextField(label="Answer", text_align=ft.TextAlign.LEFT, width=200)
    
    button_submit: ElevatedButton = ElevatedButton(text="Send", disabled=True)

    async def validate(e: ControlEvent) -> None:
        if all((question.value, answer.value)):
            button_submit.disabled = False
        else:
            button_submit.disabled = True

        await page.update_async()
    
    async def submit(e: ControlEvent) -> None:
        await open_dlg(e)
    
    question.on_change = validate
    answer.on_change = validate
    button_submit.on_click = submit


    await page.add_async(
        ft.Container(question, alignment=ft.alignment.center)
    )

    await page.add_async(
        ft.Container(answer, alignment=ft.alignment.center)
    )

    await page.add_async(
        ft.Container(button_submit, alignment=ft.alignment.center)
    )

app = flet_fastapi.app(main) # type: ignore