Search
Write a publication
Pull to refresh
2
0
Send message

Flutter. Асинхронность и параллельность

Reading time11 min
Views52K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Futures — Isolates — Event Loop" автора Didier Boelens об асинхронности и многопоточности в DartFlutter в частности).


TLDR: В целом, статья ориентирована на новичков и не изобилует откровениями. Если вы знакомы с механизмами Event Loop, Future и async/await (например, в JavaScript), корутинами в Кotlin, скорее всего, вы не найдёте для себя много нового. Однако, реализация многопоточности в виде механизма Изолятов имеет особенности.
Читать дальше →

Элементарное тестирование, или тестирование Elementary

Reading time7 min
Views6.5K

Elementary — архитектурный пакет для разработки приложений на Flutter: помогает чётко разделить слои согласно ответственностям и сделать код прозрачнее.

В предыдущих статьях рассказали, как устроен Elementary, чем он полезен, и на примере реального приложения посмотрели, как его использовать. Сегодня разберём, что у Elementary-приложений с тестированием и почему их код тестировать проще.

Читать далее

JNI Часть 1: Введение

Reading time5 min
Views36K

Всем привет! Меня зовут Роман Аймалетдинов и я разрабатываю клиентское приложение Ситимобил. Решил написать небольшую серию из трех статей по JNI, так как технология используется редко, но иногда она бывает очень полезной. Несмотря на то, что я разрабатываю классические приложения под Android, иногда хочется посмотреть технологии рядом со своей специализацией.

Читать далее

Оптимизация рендера в iOS: frame buffer, Render Server, FPS, CPU vs GPU

Reading time8 min
Views23K

Render Loop крутится — кадры мутятся

Доброго времени суток, уважаемые читатели. Здесь я начинаю свой цикл статей о работе с графикой в iOS.

В моих планах разобраться с работой базовых механик отрисовки и углубиться к таким вещам как AVFoundation, Metal.

Но а пока хочется понять как работает из коробки отрисовка наших любимых кнопок, которые мы не устаем красить. Как достичь 60 кадров в секунду. Магические слова, что заставят возжелать наш интерфейс любого.

Читать далее

Как обрабатывать состояния загрузки и ошибки с помощью StateNotifier и AsyncValue во Flutter

Reading time8 min
Views4.6K

Состояния загрузки и ошибки очень часто встречаются в приложениях, работающих асинхронно.

Если мы не отобразим пользовательский интерфейс (UI) загрузки или ошибки, когда это необходимо, пользователи могут посчитать, что приложение не работает, и не определят, была ли операция, которую они пытаются выполнить, успешной.

Читать далее

О дебаге Kotlin-корутин

Reading time5 min
Views6.5K

Привет, Хабр. Хочу поделиться своим решением одной из проблем использования корутин в Kotlin.

Корутины в Kotlin - одна из значимых фич языка, которая позволяет писать асинхронных код в синхронном стиле. Корутины прекрасны во всём, до тех пор пока не возникает необходимость их дебажить.

Читать далее

Навигация на Jetpack Compose by Google

Reading time5 min
Views24K

Всем привет, в данной статья покажу как организовать навигацию в Android приложении при использовании в своём проекте только compose UI. Методики навигации применены из официального источника от Google.

Расскажу как передавать объекты и примитивные данные между состояниями экранов, как советует google и свой метод, который мне подошёл как наиболее оптимальный и менее затратный.

Читать далее

Как внедрить что-то своё в CoordinatorLayout и не умереть: путь Android-самурая

Reading time17 min
Views7.7K

Привет! Меня зовут Андрей Шоколов, я Android-разработчик KODE.

К нам обратилась компания Forward Leasing с запросом разработать мобильное приложение по готовому дизайну. Прототип содержал дугу, которая по задумке должна была сжиматься в одну линию при скролле. За основу решили взять CoordinatorLayout: у нас уже был положительный опыт работы с ним на другом проекте. Ещё в нашей команде часто любили соревноваться, какой же Layout лучше — CoordinatorLayout или MotionLayout, и именно сейчас настало время узнать.

Сейчас я понимаю, что проблема была создана на ровном месте, — но это я выяснил только в процессе работы. В статье расскажу, с какими 7 сложностями CoordinatorLayout я столкнулся и как сделать за полчаса то, с чем я провозился сутки.

Читать далее

Как устроен вывод Generic-типов в Java

Reading time9 min
Views16K

Добрый день! Меня зовут Владислав Верминский, я отвечаю за развитие профессии JVM-разработчика в Райффайзенбанке. В этой статье я расскажу про неоднозначность вывода типов в Java. На первый взгляд с ним всё очевидно, но когда сталкиваешься со странным поведением, возникают вопросы — начинает казаться, что какие-то части кода работают неправильно. Однако, после анализа становится понятно, что всё очень непросто, но при этом всё работает по своей спецификации.

Читать далее

Грабли, спрятанные в Kotlin

Reading time6 min
Views15K

Kotlin создавался, чтобы избежать некоторых проблем Java. Но как и в любом языке, есть в нем свои особенности. Разрабатывая собственный проект, мы наткнулись на несколько таких моментов. Часть стреляет вам в колено на продакшене, только если вы ими злоупотребляете. Другая отражается на производительности высоконагруженных систем. Все эти моменты сложно заметить, поскольку их не подсвечивают специально плагины для IDE, да и в целом на первый взгляд код похож на валидный.

В этой статье мы поговорим о том, на что нужно обратить внимание.

Читать далее

Flutter: как мы выбирали навигацию для мобильного приложения?

Reading time11 min
Views25K

Flutter вышел в стабильной версии в 2018 году. Все это время он активно развивался: появилась поддержка Null safety, расширились возможности по темизации и локализации приложений, добавилось огромное количество новых виджетов. Одно из таких нововведений — Navigator 2.0, выпущенный Flutter осенью 2020 года. Это гибкий инструмент для решения непростой задачи навигации в мобильных приложениях. Разработчики начали применять Navigator 2.0, но столкнулись с трудностями и проблемами, о которых говорили команде Flutter в официальном репозитории, предлагая упростить использование инструмента. Самым подробным материалом по новому подходу является статья в блоге Flutter, но и ее мало для того, чтобы начать работать с Navigator 2.0 в продакшен-приложениях.

Хочу знать больше

Функции области видимости (Scope Function) в Kotlin

Reading time7 min
Views16K

Сразу оговорюсь, что статья объясняет базовые понятия, и если вы уже программируете на Kotlin, то, скорее всего, вы уже все знаете. Большая часть того, что приведено в статье, освещено в официальной документации, поэтому статью можно рассматривать как дополнительный материал к ней.

В статье показано как реализованы функции области видимости, даны примеры и рекомендации по их использованию

Читать далее

Нижняя панель навигации Flutter с вложенной маршрутизацией (автомаршрутизация)

Reading time15 min
Views12K

Маршрутизация во Flutter это обширная тема, поскольку она может быть выполнена множеством различных способов. Логичная и простая в навигации настройка маршрутизации однозначно приведет к улучшению пользовательского опыта. Это также сделает код намного более удобным для разработчиков. 

Читать далее

Сравниваем Java и Kotlin

Reading time9 min
Views68K

Предлагаю начать с общих черт.

• Статическая типизация

• Бесплатны и с открытым кодом

• Код преобразуется в байт-код

• Интероперабельность

• Объектно-ориентированные языки программирования

Читать далее

Идеальная светодиодная лампа за 21 рубль

Reading time3 min
Views80K
Удивительно осознавать, что достаточно сложное электронное устройство, которым является светодиодная лампочка, может стоить 21 рубль.

Ещё сложнее поверить, что эта лампочка безукоризненна по всем параметрам.

Читать дальше →

Сервис отложенных запросов для Retrofit на Android

Reading time11 min
Views5.5K

Как Вы обрабатываете отсутствие доступа в интернет в своем приложении? Показываете сообщение "Нет интернета, попробуйте позже"? Допустим случай, когда мы хотим гарантировать выполнение сетевого запроса пользователя, а не заставлять его искать интернет и снова повторять не удавшиеся запросы. Давайте создадим такую ситуацию и научимся ее обрабатывать. Реализованный пример, как обычно можно скачать по ссылке на GitHub в конце статьи!

Читать далее

Jetpack Compose — как легко построить UI на Android

Reading time4 min
Views16K

В июле этого года вместе с Android Studio Arctic Fox вышла одна из долгожданных библиотек — Jetpack Compose. Она позволяет создавать пользовательский интерфейс в декларативном стиле и обещает быть революцией в построении UI.

Разбираемся, так ли это на самом деле, какие у библиотеки преимущества и недостатки. Подробности — в статье.

Читать далее

Запросы в PostgreSQL: 5. Вложенный цикл

Reading time19 min
Views28K

Я уже рассказал об этапах выполнения запросов и о статистике, и о двух основных видах доступа к данным: о последовательном сканировании и об индексном сканировании.

Настал черед способов соединения. В этой статье я кратко напомню, какие бывают логические типы соединений, и расскажу о первом из трех физических способов соединения — о вложенном цикле. Заодно посмотрим и на новую для 14-й версии мемоизацию строк.

Читать далее

Information

Rating
Does not participate
Registered
Activity