Встроенное приложение Flet для Android внутри пустое, но при тестировании оно работает нормальноAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Встроенное приложение Flet для Android внутри пустое, но при тестировании оно работает нормально

Сообщение Anonymous »

Я делаю свое первое приложение с Флетом на Python. Проблема, с которой я сталкиваюсь, заключается в том, что когда я создаю приложение как APK, внутри оно просто пустое. Ни ошибки, ни сбоя. Самое странное, что при тестировании приложение работает совершенно нормально. Я видел в Интернете, что у некоторых людей возникла такая же проблема, но их решения мне не помогли.
Я создаю приложение с помощью flet build apk -vv
Немного о приложении:
  • Я сделал приложение для себя и выдуманного языка моих друзей.
  • Некоторые части кода написаны на русском языке.
  • Он импортирует только запросы и сам флетирует.
  • Он имеет запросы GET и PUT.
  • Он имеет несколько элементов пользовательского интерфейса. (Поля ввода, кнопки, метки)
Версии:
  • 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/
"

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": ""})
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[i] = output_words[i].upper()
except IndexError:
print("out of range, but it's fine bro")
else:
try:
output_words[i] = output_words[i][0].upper() + output_words[i][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
Любая помощь приветствуется!
Что я пробовал:
  • Помещение точной версии Flet в файл require.txt
  • Переустановка flutter
  • Перестройка
Что я ожидаю: приложение на Android, которое имеет пользовательский интерфейс и работает.

Подробнее здесь: https://stackoverflow.com/questions/797 ... works-fine
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»