Все потоки
Поиск
Написать публикацию
Обновить
4.71

Dart *

Язык программирования, созданный Google

Сначала показывать
Порог рейтинга
Уровень сложности

Паттерны проектирования в Dart

Время на прочтение17 мин
Количество просмотров24K

В последние годы растет популярность фреймворка для кроссплатформенной разработки приложений Flutter, а вместе с ним вторую жизнь получил и язык программирования Dart. Dart создавался как потенциальная замена JavaScript и мог бы занять нишу, которая сейчас принадлежит TypeScript, но по ряду причин он так и оставался длительное время "одним из проектов Google", который не был оценен ни для использования в web (после транспиляции в JavaScript), ни для создания серверных или десктопных приложений.

При этом компилятор Dart создает оптимизированный высокопроизводительный код для основных операционных систем и может также использоваться для компиляции в другие аппаратные архитектуры (например, для микроконтроллеров) и, в целом, Dart может использоваться как язык общего назначения для создания серверных приложений (Shelf, Aqueduct), устройств умного дома (с целевой платформой ARM и пакетом dart_periphery) и, конечно, десктопных, мобильных и веб-приложений (Flutter).

И все же язык обладает определенным набором особенностей, которые надо учитывать при реализации кода и использованию типовых паттернов проектирования. В этой статье мы рассмотрим примеры реализации самых часто используемых основных и порождающих шаблонов на языке Dart (будем использовать возможности наиболее актуальной версии Dart 2.17), а во второй части статьи будут рассмотрены более сложные структурные и поведенческие паттерны.

Читать далее

Мой опыт flutter собеседований

Время на прочтение3 мин
Количество просмотров22K

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

Читать далее

3D-объекты во Flutter. Расширяем Flame

Время на прочтение16 мин
Количество просмотров6.2K

В конце прошлого года движок Flame для создания игровых приложений на Flutter опубликовал первую стабильную версию 1.0 и анонсировал большие изменения в системе миксинов, подходах к управлению компонентами и созданию сцены из иерархии объектов, каждый из которых может выступить в роли контейнера. Прежде всего Flame ориентирован на двумерную графику (спрайты, системы частиц, визуальные эффекты), но возможности Skia позволяют использовать трехмерные преобразования и обеспечивать работу с шейдерами, благодаря чему можно приблизиться к созданию трехмерных игр. В этой статье мы обсудим возможный путь создания трехмерных компонентов в Flame с произвольной визуализацией с использованием компилируемых шейдеров.

Читать далее

Главный цикл в пошаговых играх

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров14K

Теперь, когда мой рогалик, написанный на Dart, имеет открытый исходный код, мне хотелось бы поговорить о том, на что было потрачено большое количество времени. На самом деле я вложил даже слишком много усилий в некоторые элементы этой игры и может когда-нибудь напишу и о них. Однако сейчас я хотел бы начать с того места, где стартует любая игра: главный цикл.

Читать далее

Поговорим про безопасность в Dart и Flutter

Время на прочтение8 мин
Количество просмотров5.6K

Безопасность приложения определяется всеми уровнями - от операционной системы и компилятора до используемых пакетов/плагинов и кода самого приложения. Особенно этот вопрос актуален, когда значительная часть используемых компонентов поддерживается сообществом и не контролируется единой организацией или фондом и, чем более популярной становится платформа, чем больше пакетов появляется и чем больше становится кодовая база платформа, тем больше вероятность возникновения уязвимостей разного уровня (особенно в низкоуровневом коде на C++, где возможна утечка памяти, переполнение буфера, состояние гонки и другие неприятности), а также внедрения вредоносного кода разработчиками из сообщества (начиная от безобидных баннеров, до внедрения шпионского кода, бэкдоров и деструктивных функций). В статье мы обсудим какие векторы атак возможны в Dart, какие меры предпринимает сообщество и Google для снижения рисков при создании платформы и пакетов (и про бейджик openssf), и как можно обезопасить себя.

Читать далее

Flutter для автомобиля. А почему бы и нет?

Время на прочтение9 мин
Количество просмотров7.5K

Одной из проблем развития бортовых систем для автомобиля является создание качественного переносимого программного обеспечения, которое бы работало на бортовых системах разных автопроизводителей и могло быть скомпилировано под разные аппаратные и программные архитектуры. Несмотря на очевидную актуальность, задача осложнялась прежде всего тем, что большинство автопроизводителей предпочитало создавать собственные проприетарные операционные системы, что затрудняло создание переносимого программного обеспечения. Ситуация изменилась со стартом проекта Automotive Grade Linux (AGL), поддерживаемыми крупными компаниями такими как Toyota, Mazda, Suzuki, Ford и Mercedes Benz и производителями медиасистем (например, Panasonic). И в планах развития проекта Flutter на 2022 год обозначено развитие поддержки AGL как целевой платформы для приложений. В этой статье мы рассмотрим основные идеи создания переносимых приложений для AGL на Flutter.

Читать далее

Разговор с разработчиками о производительности на Flutter

Время на прочтение2 мин
Количество просмотров5.5K

Уже некоторое время команда создателей фреймворка Flutter проводит ежеквартальные опросы пользователей, чтобы сами разработчики могли выразить свое мнение. О чём это говорит? Если коротко, Flutter по-прежнему нравится большинству разработчиков.

Забегая вперёд отметим, что наша большая команда поклонников Flutter тоже приняла активное участие в голосовании. Мы поддерживаем развитие этого фреймворка на радость бизнесу и пользователю. А теперь по теме.

Читать далее

Как добавить Isar в проект на Flutter

Время на прочтение3 мин
Количество просмотров3.7K

Первое время при работе с Flutter мне хватало Hive. Быстро, удобно, но возможностей Hive мне стало не хватать. На странице https://pub.dev/packages/hive разработчики посоветовали попробовать Isar и я решила рискнуть. Много звездочек, но он совсем свежий, ошибки не гуглятся, а документация оставляет большие белые пятна.

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

Читать далее

Flutter for Web: гайд для начинающих

Время на прочтение8 мин
Количество просмотров32K

Изначально Flutter был известен как фреймворк для создания кроссплатформенных мобильных приложений для Android и iOS. Но концепция Flutter не ограничивается мобильной разработкой, фреймворк позволяет создавать пользовательские интерфейсы для любого экрана с помощью кроссплатформенной разработки: разрабатывать web и desktop-приложения. Мы в Friflex работаем на Flutter с момента выхода первой версии и хорошо знаем особенности фреймворка. В этой статье Никита Улько, Flutter fullstack developer в Friflex, рассказывает об особенностях разработки Flutter для Web. Если вы хотите попробовать Flutter для web, этот гайд для вас.

Читать далее

Ещё о Flutter 3

Время на прочтение7 мин
Количество просмотров4.1K

Продолжаем обсуждать, что нового появилось в версии Flutter 3. Начало здесь.

Читать далее

Как применить БЭМ методологию во Flutter проекте

Время на прочтение5 мин
Количество просмотров3.7K

Я, как и многие Flutter разработчики, мигрировал из веб-разработки. По инерции хотелось использовать те же подходы к вёрстке и управлению состояниями. Если во втором случае можно было взять MobX или BLoC и получить что-то очень близкое к популярным веб фреймворкам, то с вёрсткой было не все так однозначно.

Читать далее

Создай себе инструмент. Часть 1: скрипт на Dart

Время на прочтение5 мин
Количество просмотров3.8K

Можно легко упустить момент, когда работа с кодом становится рутинной. Логичный шаг — автоматизировать её. Стартуем серию статей о тулинге: расскажу, как начать и куда смотреть дальше.

Читать далее

О Flutter 3

Время на прочтение5 мин
Количество просмотров4.7K

Flutter 3 - последний этап для перехода от мобильной к многоплатформенной интегрированной среде, которая поддерживает настольные приложения для macOS и Linux, интеграцию с Firebase, функции повышения производительности, а также может быть совмещена с Apple Silicon. О том, что интересного доступно в новой версии, узнаем под катом.

Читать далее

Ближайшие события

Сборка мусора во Flutter

Время на прочтение4 мин
Количество просмотров6.8K

В РСХБ мобильную разработку мы ведём преимущественно на Flutter. В новой статье поговорим об алгоритме, который используется в любом приложении – о сборщике мусора (англ. Garbage collection). Его основной задачей, как в любом высокоуровневом языке программирования, является наблюдение за ссылками и очистка областей памяти с целью предотвращения переполнения памяти. Под катом рассказываем о том, как во Flutter работает процесс сборки “мусора” - неактивных и неиспользуемых ссылок, а также локальных и глобальных экземпляров языка Dart.

В языке Dart применяется сборщик мусора по поколениям объектов. Сборщик мусора для сборки экземпляров с коротким жизненным циклом и сборщик мусора для долгоживущих экземпляров, переживших более одного цикла сборки мусора.

В процессе сборки мусора слой Framework Dart создает канал взаимодействия со слоем Flutter Engine, посредством которого узнает о моментах простоя приложения и отсутствия пользовательского взаимодействия. В эти моменты Framework Dart запускает процесс оптимизации памяти, что позволяет сократить влияния на пользовательский опыт и стабильность приложения. Кроме того, в процессе работы приложения используется скользящее сжатие, что сводит к минимуму нагрузку на память за счет уменьшения фрагментации памяти.

Читать далее

Dart 2.17: Продуктивность и интеграция

Время на прочтение8 мин
Количество просмотров4.9K

Языковые фичи. Инструменты, повышающие продуктивность. Более глубокая и масштабная интеграция с платформами. Представляем перевод статьи о свежей версии Dart с комментариями Евгения Сатурова, Head of Flutter в Surf.

Читать далее

Как подружить Elementary и BLoC

Время на прочтение6 мин
Количество просмотров4.5K

У каждого инструмента свои границы применимости, сильные и слабые стороны. Использовать решение в подходящей ситуации, а также комбинировать различные решения — хороший способ достичь эффективной разработки. Например, наша команда Surf удачно использует Elementary в связке с BLoC или Redux для управления бизнес-состоянием. 

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

Читать далее

Выразительные Unit тесты в Dart/Flutter

Время на прочтение7 мин
Количество просмотров6.5K

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

? Доступна также видео версия данной статьи.

Читать далее

Тестирование Flutter-приложений: гайд по разработке тестов на Flutter

Время на прочтение12 мин
Количество просмотров18K

Привет! Меня зовут Юрий Петров, я Flutter Team Lead в Friflex. Мы разрабатываем мобильные приложения для бизнеса и специализируемся на Flutter. В статье я расскажу про тестирование Flutter-проектов. Это гайд для новичков. Для понимания рекомендую полностью повторить процесс написания кода, который здесь демонстрируется. Готов ответить на любые вопросы по теме.

Читать далее

Flutter каналы платформы

Время на прочтение25 мин
Количество просмотров13K

Перевод статьи одного из инженеров команды Flutter, посвященной каналам платформы, и иже с ним.

Читать далее

Как на Flutter-проекте реализовать разделение Google-сервисов и Huawei-сервисов

Время на прочтение7 мин
Количество просмотров6.4K

...

Всем привет! Меня зовут Никита Спирьянов, я Head of mobile в Friflex. Мы занимаемся разработкой мобильных приложений и высоконагруженных проектов. 

Новость о том, что Аpp Store и Google Play могут перестать корректно работать для российских пользователей, спровоцировала рост популярности альтернативных способов дистрибуции приложений, один из них – магазин приложений AppGallery от Huawei.

В этой статье я покажу, как можно разделить GMS (Google Mobile Services) и HMS (Huawei Mobile Services) внутри Flutter-приложения.

Читать далее