Flet работа с классом

Подскажите пожалуйста, столько времени потерял но никак не получается, мало опыта в этом направлении, нужна ваша помощь

Есть файл pars.py, внутри две функции, первый он возвращает словарь с данными с сайта заказов еды, имя_еды, ссылка на фото еды, и ссылка на подкатегории, а вторая вызывается передавая в качестве аргумента ссылку на подкатегорию где уже списки с едой, вопросов 2 Описание еды длинное, внутри контейнера не помещается, я изучил документацию и что то делаю не то походу, нужно что бы описание переносилась на новую строку а не выходила за рамку контейнера 2 вопрос: мне нужно в коде добавить список корзины которое будут доьавлять пользователи, как мне сделать момент, проблема в том что список должна быть глобальной, нужно внутри метода класса добавлять в глобальный список еды, и при отмене удалить из списка, return вроде неполучилось, нужен другой подход

'''

import flet as ft

import pars

class Block(ft.Container):
    def __init__(self, name, link, img, width = 300, height = 280):
        super().__init__()

        self.width = width
        self.height = height
        self.expand = True
        self.margin = ft.margin.symmetric(vertical = 0)
        self.padding = 1
        self.border_radius = 10
        self.bgcolor = ft.Colors.ORANGE_300

        self.link = link

        self.on_click = self.data_products
        self.content = ft.Column([
                            ft.Image(img, cache_height = 300, expand=True),
                            ft.Row([
                                ft.Text(name),
                            ], alignment = ft.MainAxisAlignment.CENTER) ])
    

    def data_products(self, e):
        self.page.clean()

        self.page.scroll = True
        self.page.bgcolor = ft.Colors.ORANGE_600
        self.page.update()

        data_screen = ft.View(
                route = '/product',
                scroll = True,
                controls = [
                    ft.Text('str', size = 200)
                ])
        self.page.go('/product')
        def route_change(route):
            #self.page.views.clear()
            self.page.views.append(
                data_screen
        )
            self.page.update()
        self.page.on_route_change = route_change

        row_cat = ft.Row([], spacing = 5)
        col_cat = ft.Column([])
        data_screen.controls.append(col_cat)
        data = pars.data_product(self.link)
        for n, d, p, i in zip(data['name'], data['desc'], data['price'], data['img']):
            row_cat.controls.append(Product(n, d, p, i))

            count_elements = 5 if self.page.width > self.page.height else 2
            if len(row_cat.controls) == count_elements:
                col_cat.controls.append(row_cat)
                row_cat = ft.Row([], spacing = 5)
            self.page.update()

        
        




class Product(ft.Container):
    def __init__(self, name, desc, price, img, height = 400):
        super().__init__()

        self.height = height
        self.expand = True
        self.margin = ft.margin.only(bottom = 30)
        self.border_radius = 10
        self.bgcolor = ft.Colors.ORANGE_300

        self.name = name
        self.desc = desc
        self.price = price
        self.img = img

        self.grocery_btn = ft.ElevatedButton('В корзину',
                                            icon = ft.Icons.LOCAL_GROCERY_STORE,
                                            on_click = self.add_grocery)

        self.content = ft.Column([
            ft.Image(img),
            ft.Row([ft.Text(name, weight = ft.FontWeight.W_300),], alignment = ft.MainAxisAlignment.CENTER),
            ft.Row([ft.Text(desc,
                            overflow = ft.TextOverflow.VISIBLE,
                            max_lines = 30,
                            italic=True),], alignment = ft.MainAxisAlignment.CENTER),
            ft.Row([ft.Text(price, weight = ft.FontWeight.W_300, )], alignment = ft.MainAxisAlignment.CENTER),
            ft.Row([self.grocery_btn], alignment = ft.MainAxisAlignment.CENTER)
        ], alignment = ft.MainAxisAlignment.SPACE_AROUND) 


    def add_grocery(self, e):
        self.grocery_btn.text = 'В корзине' if self.grocery_btn=='В корзину' else 'В корзину'
        self.grocery_btn.color = ft.Colors.GREEN_500 if self.grocery_btn==None or self.grocery_btn=='none' else 'none'
        self.page.update()









def main(page):
    page.bgcolor = ft.Colors.ORANGE_600
    page.scroll = True
    page.theme_mode = 'dark'
    


    #ВЕРХНИЙ АППБАР
    def back_icon_search(e):
        page.appbar.actions = [ft.IconButton(ft.Icons.SEARCH, on_click = search_food)]
        page.appbar.center_title = True
        page.update()
    search_food_btn = ft.TextField(label = 'Введите название',
                                   prefix_icon = ft.Icons.SEARCH,
                                   border = 'underline',
                                   filled = True,
                                   width = page.width//1.7,
                                   height = 40,
                                   on_blur = back_icon_search)
    def search_food(e):
        page.appbar.actions = [search_food_btn]
        page.appbar.center_title = False
        page.update()
        search_food_btn.focus()

    data_appbar = ft.AppBar(
        bgcolor = ft.Colors.ORANGE_600,
        title = ft.Text('Рандеву'),
        center_title = True,
        leading = ft.IconButton(ft.Icons.MENU),
        actions = [ft.IconButton(ft.Icons.SEARCH, on_click = search_food)]  )
    
    page.appbar = data_appbar
    
    data_bottom_appbar = ft.BottomAppBar(
        bgcolor=ft.Colors.BLUE,
        shape=ft.NotchShape.CIRCULAR,
        content=ft.Row(
            controls=[
                ft.IconButton(icon=ft.Icons.MENU, icon_color=ft.Colors.WHITE),
                ft.Container(expand=True),
                ft.IconButton(icon=ft.Icons.SEARCH, icon_color=ft.Colors.WHITE),
                ft.IconButton(icon=ft.Icons.FAVORITE, icon_color=ft.Colors.WHITE),
            ]),)
    page.bottom_appbar = data_bottom_appbar

    
    #Добавление категории на экран
    row_cat = ft.Row([], spacing = 5)
    col_cat = ft.Column([])
    page.add(col_cat)
    data = pars.data_category()
    for n, l, i in zip(data['name'], data['link'], data['img']):
        row_cat.controls.append(Block(n, l, i, width=page.width/5))

        count_elements = 5 if page.width > page.height else 2
        if len(row_cat.controls) == count_elements:
            col_cat.controls.append(row_cat)
            row_cat = ft.Row([], spacing = 5)
        page.update()


    


ft.app(target=main)

Ответы (0 шт):