use_case может как получать, так и сохранять данные. Что касается описания интерфейса, предложенный вами способ тоже выглядит логичным, при этом в примере мы для удобства выбрали другой способ - держать абстракцию и реализацию рядом друг с другом.
Как показано на последней схеме, use case находится между presenter и repository, внедрить use case в цепочку можно через инициализацию в presenter'е, такой способ реализован в примере.
Согласны, архитектуру в флаттере можно рассмотреть на примере многих приложений, как простых, так и более сложных. Руководство при этом может превратиться в настоящую книгу) Однако, наша основная задача заключалась в том, чтобы познакомить новичков с реализацией чистой архитектуры на практике. А какие приложения выбрали бы вы?
Можно вызывать emit сколько угодно раз, при вызове метода из кубита первым действием уведомить UI, вызвав emit(LoadingState()), загрузить данные из интернета, после emit(LoadedState()).
Предположим, что вам необходимо, чтобы на экране с TabBarView каждый таб мог переходить на новый роут. Для этого можно обернуть каждый элемент TabBarView в Navigator, что позволит переходить по роутам каждому табу, не затрагивая глобальный роут.
TabBarView будет выглядеть следующим образом:
Переход на другие роуты внутри таба будет происходить так же, как обычно
Вы правы, Render Effect перерисует соседние элементы. При этом анализироваться будет вся иерархия UI, но не обязательно при этом будет перерисована вся сцена.
Добрый день!
Доклады начнутся в 11:00, каждый из них займет около 25 минут + 10 минут ответы на вопросы. В 13:30 будет кофе-брейк – около получаса, после этого – доклад-дискуссия. Доклады по мобильной разработке и Backend будут проходить в разных залах – «Библиотека» и Brandroom
Спасибо, проверку действительно стоит делать отдельно для каждого слоя, при этом она находится в правильном месте, так как на момент проверки обновленный слой уже должен быть создан
Если нажать на круглую кнопку чуть выше границы таб-бара, ничего не произойдет (а мы хотим, чтобы был выбран соответствующий tabBarItem и поменялся ViewController)
Можно, конечно, ограничиться добавлением экшена для кнопки, но тогда не будет обрабатываться касание на выступающей вверх области кнопки.
Мы добавили в статью ссылку на проект на GitHub. Можно закомментировать переопределенный метод point(inside:with:) в классе CustomTabBar и проверить, как это будет работать без UIResponderChain
Добрый день. В вашем случае в layers будет 4 элемента. В нашем случае мы всегда проверяем наличие слоев: если слой уже есть, он заменяется, а не добавляется, поэтому у нас их всегда остается 2
Уточните, пожалуйста, опасение связано с утечкой памяти? Если да, то никаких проблем не будет, потому что слои создаются локально в методе drawTabBar() и перестают существовать после выхода из метода. А свойства класса опциональные, поэтому утечки тоже быть не может.
Для теневых полей можно использовать название в обычном формате, например, val state и private val currentState. Это скорее субъективное предпочтение, связанное с тем, что код с обилием символов _ может казаться «замусоренным». Кому-то наоборот больше нравится _ из-за краткости. Самое главное, чтобы в команде эти детали были согласованы и специалисты писали код проекта в одном стиле.
Для строк из xml-ресурсов TextResource хранит только id строки. А вот SimpleTextResource придется переводить, но это необходимо делать и в том случае, если мы не вводим дополнительную абстракцию. То есть повторно вызывать MyViewModel.loadText() надо только в том случае, если с сервера приходят данные на разных языках, в зависимости от параметра запроса.
Также следует отметить, что описанный в статье TextResource предназначен не для кеширования, а для повышения чистоты и гибкости кода.
По нашим оценкам, статья может быть полезна для тех, кто собирается реализовать полнотекстовый поиск впервые, а также может заинтересовать тех, у кого он реализован без использования возможностей FTS5.
Добрый день! Действительно, хотя заявления о том, что Fuchsia — возможная замена Android, звучат уже достаточно давно, они всегда носят неофициальный характер (пример в Bloomberg). По этой причине в комьюнити нередко прислушиваются даже к личным комментариям от разработчиков Google, в частности, Travis Geiselbrecht подчеркивает, что Fuchsia «не игрушка». При этом в 2019 году Google подтвердил, что в ближайшие годы полный отказ от Android не планируется, а Fuchsia будет использоваться на различных устройствах, в том числе IoT. У Android огромная экосистема приложений, и единомоментно свернуть ее просто невозможно. Однако, в свое время тоже существовали легендарные ОС, которые сейчас уже не используются. Если эксперименты с новыми ОС окажутся удачными, они могут вытеснить Android постепенно, но этот процесс займет как минимум несколько лет.
use_case может как получать, так и сохранять данные. Что касается описания интерфейса, предложенный вами способ тоже выглядит логичным, при этом в примере мы для удобства выбрали другой способ - держать абстракцию и реализацию рядом друг с другом.
Как показано на последней схеме, use case находится между presenter и repository, внедрить use case в цепочку можно через инициализацию в presenter'е, такой способ реализован в примере.
Согласны, архитектуру в флаттере можно рассмотреть на примере многих приложений, как простых, так и более сложных. Руководство при этом может превратиться в настоящую книгу) Однако, наша основная задача заключалась в том, чтобы познакомить новичков с реализацией чистой архитектуры на практике. А какие приложения выбрали бы вы?
Можно вызывать emit сколько угодно раз, при вызове метода из кубита первым действием уведомить UI, вызвав emit(LoadingState()), загрузить данные из интернета, после emit(LoadedState()).
Предположим, что вам необходимо, чтобы на экране с TabBarView каждый таб мог переходить на новый роут. Для этого можно обернуть каждый элемент TabBarView в Navigator, что позволит переходить по роутам каждому табу, не затрагивая глобальный роут.
TabBarView будет выглядеть следующим образом:
Переход на другие роуты внутри таба будет происходить так же, как обычно
Доклады начнутся в 11:00, каждый из них займет около 25 минут + 10 минут ответы на вопросы. В 13:30 будет кофе-брейк – около получаса, после этого – доклад-дискуссия. Доклады по мобильной разработке и Backend будут проходить в разных залах – «Библиотека» и Brandroom
Можно, конечно, ограничиться добавлением экшена для кнопки, но тогда не будет обрабатываться касание на выступающей вверх области кнопки.
Мы добавили в статью ссылку на проект на GitHub. Можно закомментировать переопределенный метод point(inside:with:) в классе CustomTabBar и проверить, как это будет работать без UIResponderChain
Также следует отметить, что описанный в статье TextResource предназначен не для кеширования, а для повышения чистоты и гибкости кода.