Hola, Amigos! На связи Павел Гершевич, Mobile TeamLead в Amiga. В каждом приложении мы авторизуем пользователей, но не все встраивают механизмы обновления токенов.
Поэтому мы написали статью о том, как это делается, и поделились нашим опытом. Из нее вы узнаете:
Как работает авторизация запросов на сервере
🔵 Что хранит в себе JWT и как узнать, когда он закончит действовать
🔵 Как работает QueryInterceptor в Dio и чем он отличается от обычного
🔵 3 способа обработки токенов с завершившимся сроком действия
Ссылка на статью на Хабре
Делитесь в комментариях, а как вы поступаете при получении ошибки 401 Unauthorized?
Поэтому мы написали статью о том, как это делается, и поделились нашим опытом. Из нее вы узнаете:
Как работает авторизация запросов на сервере
Ссылка на статью на Хабре
Делитесь в комментариях, а как вы поступаете при получении ошибки 401 Unauthorized?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥3
Hola, Amigos! На связи Павел Гершевич, Mobile TeamLead в Amiga. Для того, чтобы наши приложения работали лучше, можно отслеживать их жизненный цикл, чтобы не совершалось лишних действий. Для этого нам нужен
Рассказывайте в комментариях, а что вы делаете при изменении жизненного цикла приложения?
AppLifecycleState, который предоставляет добавление обратных вызовов для изменения состояния. Давайте посмотрим, какие состояния есть у Flutter-приложений:resumed - стандартное состояние, когда приложение находится в foreground. При переходе в него можно запускать остановленные потоки данных (Stream) и анимации, а также обновлять устаревшие данные.inactive - наше приложение видно, но пользователь не может с ним работать. Его можно увидеть, когда мы смотрим на все свернутые приложения. Также, например, открытие системного диалогового окна для выдачи разрешения переведет в это состояние. Тут можно остановить анимации. Но учитывайте, это состояние - временное.hidden - еще одно временное состояние. Наше приложение не видно, но оно еще не полностью на паузе. Оно добавлено в Flutter 3.13 чтобы мы могли сохранить состояние, пока операционная система не порезала ресурсы.paused - наше приложение полностью в фоне. Основной isolate еще работает, но Flutter Engine уже не занимается рендерингом. В этом состоянии можно отключиться от WebSockets, отменить работу таймеров, прослушку потоков данных. Но из этого состояния ОС может закрыть приложение.detached - крайнее состояние нашего приложения. Оно показывает, что приложение закрывается либо открывается (холодный запуск).Рассказывайте в комментариях, а что вы делаете при изменении жизненного цикла приложения?
1🔥11❤6👍5
Hola, Amigos! Мы все любим ускорять и упрощать написание шаблонного кода. Один из таких методов - Snippets.
Snippet - аббревиатура, которую IDE может преобразовать в код.
Показываем, как это сделать в Android Studio. А в следующей части расскажем про VS Code.
Рассказывайте в комментариях, используете snippets в работе?
Snippet - аббревиатура, которую IDE может преобразовать в код.
Показываем, как это сделать в Android Studio. А в следующей части расскажем про VS Code.
Рассказывайте в комментариях, используете snippets в работе?
1❤9👍8🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥16❤9👍7
Hola, Amigos! В прошлой части мы показали как создать свой собственный Snippet в Android Studio. Теперь пришла очередь сделать это в VS Code.
Делитесь в комментариях, какие Snippets для вас были бы самыми полезными?
Делитесь в комментариях, какие Snippets для вас были бы самыми полезными?
1🔥13❤4👍3
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Не всё, что нам нужно, упаковано в библиотеки, поэтому иногда мы пишем решения сами. После этого возникает желание завернуть код в пакет и отправить на pub.dev, чтобы облегчить работу другим разработчикам. А может, вы сами создаете полезное SDK и внедряете поддержку Flutter.
И перед публикацией встает вопрос: какую лицензию выбрать? Давайте разбираться.
Сегодня мы рассмотрим лицензии для Open Source проектов, которые чаще всего используют библиотеки под Dart и Flutter - MIT (uuid, flutter_svg), BSD-3-Clause (библиотеки от команд Dart и Flutter) и Apache 2.0 (clock, rxdart).
Все они относятся к категории разрешительных: позволяют использовать, модифицировать и распространять код. Но отличия у них всё-таки есть. Давайте разбираться.
Лицензия MIT запрещает предъявлять иски к авторам. Для ее использования нужно оставить уведомления в коде и файл с текстом самой лицензии. Можно сказать, что она является базовой. Ее стоит выбирать для небольших проектов и примеров кода.
Лицензия BSD-3-Clause максимально похожа на MIT, но в нее добавлен пункт о запрете рекламы от имени автора. Ее можно выбрать, если вы не хотите, чтобы ваше имя использовали для рекламы чужого продукта.
Лицензия Apache 2.0 является самой защищенной, хотя у нее нет полноценного пункта о запрете рекламы от имени автора (только при согласовании), но она максимально защищает патенты. Еще одно отличие - нужно указывать изменения в коде, если мы модифицируем библиотеку. Такую лицензию выбирают, если проект серьезный и имеет патенты.
Еще одно важное отличие - совместимость с лицензиями GPLv3. MIT и BSD-3-Clause имеют совместимость только с GPLv2, поэтому их можно использовать в проектах с GPLv3, но не наоборот. А вот у Apache 2.0 есть полная совместимость.
P.S. В 2024 году мы анонсировали набор библиотек Amiga Dev Screen. Сейчас мы его активно заканчиваем, а также выбрали для него лицензию MIT.
И перед публикацией встает вопрос: какую лицензию выбрать? Давайте разбираться.
Сегодня мы рассмотрим лицензии для Open Source проектов, которые чаще всего используют библиотеки под Dart и Flutter - MIT (uuid, flutter_svg), BSD-3-Clause (библиотеки от команд Dart и Flutter) и Apache 2.0 (clock, rxdart).
Все они относятся к категории разрешительных: позволяют использовать, модифицировать и распространять код. Но отличия у них всё-таки есть. Давайте разбираться.
Лицензия MIT запрещает предъявлять иски к авторам. Для ее использования нужно оставить уведомления в коде и файл с текстом самой лицензии. Можно сказать, что она является базовой. Ее стоит выбирать для небольших проектов и примеров кода.
Лицензия BSD-3-Clause максимально похожа на MIT, но в нее добавлен пункт о запрете рекламы от имени автора. Ее можно выбрать, если вы не хотите, чтобы ваше имя использовали для рекламы чужого продукта.
Лицензия Apache 2.0 является самой защищенной, хотя у нее нет полноценного пункта о запрете рекламы от имени автора (только при согласовании), но она максимально защищает патенты. Еще одно отличие - нужно указывать изменения в коде, если мы модифицируем библиотеку. Такую лицензию выбирают, если проект серьезный и имеет патенты.
Еще одно важное отличие - совместимость с лицензиями GPLv3. MIT и BSD-3-Clause имеют совместимость только с GPLv2, поэтому их можно использовать в проектах с GPLv3, но не наоборот. А вот у Apache 2.0 есть полная совместимость.
1👍9🔥6❤5