Как мне повторно использовать MDNavigationDrawer без повторного ввода кода kivymd - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть приведенный ниже код MDNavigationDrawer, но проблема в том, что я повторяю его на каждом экране, что просто делает код длиннее безошибочно. Как мне написать приведенный ниже код один раз и повторно использовать его на каждом экране?

<Example>:
    name: "example"

    NavigationLayout:
        id: nav_layout
        MDNavigationDrawer:
            NavigationDrawerIconButton:
                text: "My Conversations"
                on_release: app.root.current = "conversations"
                icon: "chat-outline"
            NavigationDrawerIconButton:
                text: "Personal Details"
                on_release: app.root.current = "details"
                icon: "settings"
            NavigationDrawerIconButton:
                text: "Logout"
                on_release: root.clear_details()
                on_release: app.root.current = "login"
                icon: "account"

1 Ответ

0 голосов
/ 21 апреля 2020

Попробуйте использовать динамический c класс:

    <MyNavDrawer@MDNavigationDrawer>:
        NavigationDrawerIconButton:
            text: "My Conversations"
            on_release: app.root.current = "conversations"
            icon: "chat-outline"
        NavigationDrawerIconButton:
            text: "Personal Details"
            on_release: app.root.current = "details"
            icon: "settings"
        NavigationDrawerIconButton:
            text: "Logout"
            on_release: root.clear_details()
            on_release: app.root.current = "login"
            icon: "account"

Затем используйте его как:

<Example>:
    name: "example"

    NavigationLayout:
        id: nav_layout
        MyNavDrawer:

Может быть проблема со строкой on_release: root.clear_details(), так как root может не указывать на правильный экземпляр.

...