1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] Built Flet android app is blank inside, but in testing it works fine

Discussão em 'Python' iniciado por Stack, Novembro 28, 2025.

  1. Stack

    Stack Membro Participativo

    I am making my first app with Flet in python. The problem that I get, is when I build the app as an apk, it is just blank inside. No error, no crash. The weirdest thing is, that the app works completely fine when testing. I've seen some people experiencing the same issue on the internet, but their solutions didn't work for me.

    I build the app with flet build apk -vv

    A little bit about the app:

    • I made the app for me and my friends' made up language.
    • Some parts of the code are in russian.
    • It imports only requests and flet itself.
    • It has GET and PUT requests.
    • It has a few UI elements. (Input Fields, Buttons, Labels)

    Versions of stuff:

    • python: 3.12
    • flet: 0.28.3
    • flutter: 3.29.2

    main.py:

    import flet as ft
    import process_data as pd
    import requests

    URL = "https://json.extendsclass.com/bin/<private>"

    def get_data() -> dict | str:
    res_get = requests.get(URL)

    if res_get.status_code == 200:
    return res_get.json()
    else:
    return res_get.text

    def append(ru, wtml):
    """
    :param ru: - in russian
    :param wtml: - in watermelonian
    """

    new_data = get_data()
    new_data[ru] = wtml

    res_update = requests.put(URL, json=new_data, headers={"Security-key": "<private>"})
    if res_update.status_code == 200:
    return res_update.json()
    else:
    return res_update.text

    def change(ru, wtml):
    append(ru, wtml)


    translations = get_data()

    VALID_PUNCTUATION = ". , ! ? ; : @ # $ % ^ & / * - + ~".split(" ")

    def main(page: ft.Page):
    def translate(e):
    to_translate = input_field.value.lower()

    to_translate = ''.join(char for char in to_translate if char not in VALID_PUNCTUATION)

    to_translate = to_translate.split(" ")


    result = ""
    for word in to_translate:
    if word in translations:
    result += translations[word]
    else:
    if pd.check_word_already_good(word):
    result += word
    else:
    result += "ар"+word+"уз"

    result += " "

    result = pd.copy_capitalization(input_field.value, result)
    result = pd.copy_punctuation(input_field.value, result)

    output_field.value = result

    page.update()

    input_field = ft.TextField(label="Русский", hint_text="Введите текст сюда")
    output_field = ft.TextField(label="Арбузный", read_only=True, value="Жмакни на кнопку")
    submit_button = ft.Button(text="Перевести", on_click=translate)

    page.add(ft.Container(
    content=ft.Column(
    controls=(input_field, output_field, submit_button)
    ), margin=ft.margin.only(10, 110, 10, 100)))

    def add_word(e):
    append(new_word_field.value.lower(), new_word_translation_field.value.lower())
    translations[new_word_field.value.lower()] = new_word_translation_field.value.lower()
    new_word_text.value = f"Добавлено слово \"{new_word_field.value}\" -> \"{new_word_translation_field.value}\""
    page.update()

    new_word_field = ft.TextField(label="Добавить слово (Русский)", hint_text="Введите текст сюда")
    new_word_translation_field = ft.TextField(label="Перевод (Арбузный)", hint_text="Введите текст сюда")
    submit_new_word_button = ft.Button(text="Добавить", on_click=add_word)
    new_word_text = ft.Text(value="")

    page.add(ft.Container(
    content=ft.Column(
    controls=(new_word_field, new_word_translation_field, submit_new_word_button, new_word_text)
    ), margin=ft.margin.only(10, 10, 10, 110)))

    page.update()


    ft.app(main, port=5000)


    process_data.py:

    def apply_spaces_patterned(pattern, text):
    result = []
    text_index = 0

    for char in pattern:
    if char == " ":
    result.append(" ")
    else:
    if text_index < len(text):
    result.append(text[text_index])
    text_index += 1

    if text_index < len(text):
    result.append(text[text_index:])

    return "".join(result)


    def copy_capitalization(input_str: str, output_str: str):
    words = input_str.split(" ")
    output_words = output_str.split(" ")

    for i, word in enumerate(words):
    if word[0].capitalize() == word[0]:
    # is capitalized
    if word.upper() == word:
    # is caps
    try:
    output_words = output_words.upper()
    except IndexError:
    print("out of range, but it's fine bro")
    else:
    try:
    output_words = output_words[0].upper() + output_words[1:]
    except IndexError:
    print("out of range, but it's fine bro")
    result = "".join(output_words)

    return apply_spaces_patterned(output_str, result)

    def copy_punctuation(pattern: str, text: str):
    VALID_PUNCTUATION = ". , ! ? ; : @ # $ % ^ & / * - + ~".split(" ")
    punctuations = []

    pattern_words = pattern.split(" ")
    text_words = text.split(" ")

    for i, word in enumerate(pattern_words):
    if word[-1] in VALID_PUNCTUATION:
    punctuations.append([word[-1], i])

    result = ""
    if not punctuations:
    return text

    for i, word in enumerate(text_words):
    added = False
    for punc in punctuations:
    if punc[1] == i:
    added = True
    result = result + str(text_words[punc[1]] + punc[0]) + " " # лучше это не трогать
    break
    if not added:
    result = result + word + " "

    if result[-1] == " ":
    result = result[0:len(result)-1]

    return result


    def check_word_already_good(word):
    allowed_letters = "а р б у з".split(" ")

    for letter in word:
    if letter not in allowed_letters:
    return False

    return True


    Any help is appreciated!

    Things I've tried:

    • Putting the exact Flet version in requirements.txt
    • Reinstalling flutter
    • Rebuilding

    What I expect: app on Android that has a UI, and works.

    Continue reading...

Compartilhe esta Página