Pull to refresh
KivyMD @HeaTTheatRread⁠-⁠only

Разработчик ПО (мобильные и десктопные системы)

Send message

Аналогично и в примерах на Flutter! Некоторые — просто жуткий стоп кран! В следующей статье я покажу, какой Flutter тормоз. А вам могу ответить только одно — примеры в студию!

Во-первых, это не МОЙ фреймворк! Во-вторых, это не натив, глазки открой!

Даже те, кто используют Flutter, согласны, что код этого фреймворка "паравозный" и выгрвиглазной. Но вы, видимо, очередной троллейбус, так что ваше сообщение остается без ответа!

с такими приложениями делать абсолютно нечего

С какими "такими"?

Лог покажите. Что можно ответить на "Тоже самое, вылетает"?

У стандартного ScreenManager есть стандартные Transitions, которые можно расширять собственными шейдерами. Но вы имеете в виду нечто иное. Мы буквально в прошлое воскресение обсуждали создание подобного менеджера:


image


Более того этот вопрос уже неделю закреплен в нашем TODO листе в репозитории KivyMD.

Вот переключение слайда свайпом. С таким успехом я просто назначаю в менеджере экранов имя экрана, которое желаю активировать. Это довольно тривиальная задача.


image

Вообще, у каждого виджета в Kivy есть методы с помощью которого вы можете отловить любые события, происходящие на экране. Вот небольшая часть списка доступных событий:


['double_tap_time', 'grab_state', 'is_double_tap', 'is_mouse_scrolling', 'is_touch', 'is_triple_tap', 'move', 'push', 'push_attrs', 'push_attrs_stack', 'scale_for_screen', 'time_end', 'time_start', 'time_update', 'triple_tap_time', 'ungrab', 'update_time_end']

Поэтому не составляет труда поймать ивент свайпа и переключить экран. Но так чтобы конкретно это было реализовано для iOS… Не понятно зачем?..

Как таковой, документации у нас, к сожалению, нет. По двум причинам. Во-первых, на это нет времени, потому что два человека не могут успеть всё. А во-вторых, обширнейшая документация есть у Kivy. А KivyMD == Kivy. Поэтому если вы знакомы с документацией Kivy, вам будет достаточно посмотреть на примеры из Wiki KivyMD, чтобы начать с ним работать. А вообще, да, документацию мы работаем.

А вы на год смотрели? На версию KivyMD смотрели? Пакет собран из репозитория на GitLab, который уже четыре года как не поддерживается! Об этом я писал в этой статье Нашей исправленной версии в сторах нет! И потом… Если клавиатура перекрывает текстовое поле, то это не вина библиотеки, а рукожопого программиста, который забыл указать Window.softinput_mode = "below_target". Это касается и анимации, которая устанавливается в ScreenManager и текста, которому не указали shorten!


image


image

У нас пока не хватает времени реализовать все возможности, которые хотелось бы — KivyMD wiki

В KivyMD для этого существует виджет UserAnimationCard:


image


class MainApp(MDApp):
    def build(self):
        user_animation_card = MDUserAnimationCard(
            user_name="User Name",
            path_to_avatar="path_to_avatar",
        )
        user_animation_card.box_content.add_widget(ContentClass())
        user_animation_card.open()

if __name__ == "__main__":
    MainApp().run()

В Kivy это совершенно не нужно!

Что вы подразумеваете под "состоянием приложения"?


Flutter по сравнению с приведенными аргументами при отображении(создании) виджетов выглядит действительно уныло

Не только выглядит. Вчера обновил официальное демонстрационное приложение на Flutter… Половина примеров UI там безбожно тормозит.


Как работать с БД?

Точно так же, как и в Python на десктопе.


Как обстоят дела у Киви с вызовом нативных функций?

Нормально дела обстоят. Происходит это следующим образом с помощью библиотеки PyJnius для Андроид и PuObjus для iOS:


def get_imei_android():
    from jnius import autoclass

    Service = autoclass('org.renpy.android.PythonActivity').mActivity
    Context = autoclass('android.content.Context')
    TelephonyManager = Service.getSystemService(Context.TELEPHONY_SERVICE)
    return str(TelephonyManager.getDeviceId())

Для примера — реализация нативного получения IMEI устройства на Java:


import android.content.Context;
import android.telephony.TelephonyManager;

public class GetImeiAndroid {
    public String getImeiAndroid()
    {
        TelephonyManager  tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
        String IMEINumber = tm.getDeviceId(); 
        return IMEINumber;
    }
}

Этот проект развивается очень медленно, так как я работаю над ним в одиночку. А поскольку это не основной мой проект, плюс основная работа занимает львиную часть времени, то о каких-либо сроках говорить бессмысленно.

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity