В октябре 2011, Google анонсирует Dart: «новый язык для структурного веб программирования»

Анонс Dart 2.0: Оптимизированный для клиентской разработки

Dash — официальный маскот языка
Flutter для Android-разработчиков. Как создавать UI для Activity, используя Flutter
Эта статья написана для Android-разработчиков, которые хотят применить свои существующие знания для создания мобильных приложений с помощью Flutter. В этой статье мы рассмотрим эквивалент Activity во Flutter.
Быстрые прототипы на Flutter и Kotlin/Native
Получив задачу разработать приложение для нашей предстоящей внутренней конференции в рамках OLX Group, моя команда задумалась о том, как сократить время создания приложения для iOS и Android, потому что нам и без этого было чем заняться. Первое, что мне пришло в голову, — использовать Kotlin, т.к. он может компилироваться на других платформах. Спойлер: не все пошло так, как изначально планировалось, но мы сделали всё вовремя, попутно узнав много нового!
Итак, это рассказ о том, как мы делали приложение OLX Group Product & Tech Conference в рекордно сжатые сроки.
Анонсирован Dart 2.2: более производительный машинный код, поддержка Set литералов
Сегодня (26 февраля 2019) мы объявляем о выпуске Dart 2.2 SDK — обновления для Dart 2, которое предлагает улучшенную производительность ahead-of-time (AOT) кода и поддержку Set литералов.

Dart 2. Асинхронное программирование: потоки данных
Асинхронное программирование: потоки данных
Содержание
- Получение событий потока
- События с ошибкой
- Работа с потоками
- Типы потоков
- Методы, обрабатывающие поток
- Методы, изменяющие поток
- Метод listen()
- Что еще почитать?
Что важно:
- Потоки обеспечивают асинхронную последовательность данных.
- Последовательности данных содержат пользовательские события и данные, считываемые из файлов.
- Поток можно обработать с помощью await for или
listen()
изStream
API. - Потоки предоставляют способ реагирования на ошибки.
- Существует два типа потоков: потоки-подписки (
single subscription
) и широковещательные (broadcast
).
Dart 2. Асинхронное программирование: futures
Асинхронное программирование: futures
Содержание
Что важно:
- Код в Dart работает в одном треде (прим. thread — поток) выполнения.
- Из-за кода, который долго занимает (блокирует) тред выполнения, программа может зависнуть.
- Объекты
Future
(futures
) представляют результаты асинхронных операций — обработки или ввода-вывода, которые будут завершены позже. - Чтобы приостановить выполнение до завершения в будущем, используйте
await
в асинхронной функции (илиthen()
при использованииFuture
API). - Чтобы поймать ошибки, используйте в асинхронной функции конструкцию
try-catch
(илиcatchError()
при использованииFuture
API). - Для одновременной обработки создайте изолят (или worker для веб-приложения).
Работа с камерой во Flutter
Возможность задействовать камеру существует во многих приложениях, и мы все регулярно пользуемся ею. Во Flutter мы можем реализовать работу с камерой с помощью двух официальных плагинов:
Между ними – заметная разница, и использовать их стоит по ситуации:
camera
позволяет взаимодействовать с доступными устройству камерами из вашего приложения и выводить изображение в виджет. Хорошо подходит под задачи, когда надо "кастомизировать" работу камеры под приложение.image-picker
запускает приложение камеры и возвращает объект типаFile
(изображение или видеофайл, выбранный пользователем) в ваше приложение. Такжеimage-picker
дает возможность выбора файла из имеющихся на устройстве, при этом, как и в случае камеры, запускается отдельное приложение, после чего в ваше приложение возвращается выбранный объект.
Здесь можно посмотреть исходники.
Flutter. Keys! Для чего они?
Параметр key
можно найти практически в каждом конструкторе виджета, но используют этот параметр при разработке достаточно редко. Keys
сохраняют состояние при перемещении виджетов в дереве виджетов. На практике это означает, что они могут быть полезны для сохранения местоположения прокрутки пользователя или сохранения состояния при изменении коллекции.
Данная статья адаптирована из следующего видео. Если вы предпочитаете слушать / смотреть, а не читать, то видео предоставит вам тот же материал.
gRPC + Dart, Сервис + Клиент, напишем

Привет! Меня зовут Андрей. Занимаюсь разработкой Flutter приложений.
Написание материала вызвано желанием показать пример создания сервиса c использованием технологии gRPC в экосистеме Dart и, соответственно, Flutter. Желание периодически возникает, когда приходится испытывать "боль", при переключении на проекты, в которых до сих пор применяется REST + JSON.
Это будет короткая серия из 3-4 статей.
gRPC + Dart, Сервис + Клиент, напишем? Часть 2

gRPC + Dart, Сервис + Клиент, напишем? Часть 2.
Продолжим развивать сервис на основе технологии gRPC, основы которого мы заложили в первой части.
gRPC + Dart, Сервис + Клиент, напишем? Часть 3

Привет, я Андрей, работаю Flutter разработчиком в компании Финам.
Продолжим развивать сервис Umka.
На примере реализации кода для проведения "экзамена" мы познакомимся с возможностью технологии gRPC передавать данные в виде потока от клиентского приложения на сервис.
Также парой-тройкой десятков строчек кода мы реализуем чат, для проведения "технического интервью".
Для этого используем возможность gRPC осуществлять двунаправленную потоковую передачу данных от сервиса к клиентскому приложению и обратно в рамках одного HTTP/2 соединения.
gRPC + Dart, Сервис + Клиент, напишем? Часть 4: подключаем мобильное Flutter приложение

В этой части мы сделаем рефакторинг проекта и подключим клиентское мобильное Flutter приложение к сервису Umka.
В статье даны ссылки на исходный код, а в конце приведён пример команд, которыми проект можно запустить на своём локальном компьютере и "поиграться" с приложением.