Обновить
8.68

Dart *

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

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

Flutter Flame: глобальная оптимизация производительности игрового движка

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

Мой опыт работы с игровыми движками для Flutter привёл меня к, в целом, удручающим выводам: производительность хромает, и без специально проработанных «хаков» сделать что-то сложнее простой казуалочки представляется нереальной задачей.

Ранее я перечислил ряд подходов, которые смогут ускорить ваши вычисления от нескольких десятков до нескольких сотен раз. Однако, это не предел. Сегодня расскажу ещё об одном методе, который поможет вывести игровой движок Flame на новый уровень.

Читать далее

Тестирование мобильных приложений на Flutter с использованием Python + Appium

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

Тестирование нативных мобильных приложений для Android и iOS обычно обеспечивается библиотеками UiAutomator2 и XCUITest, но сейчас, в связи с появлением мобильных приложений, разработанных с использованием Flutter Framework, использовать их для тестирования становится затруднительно, поскольку семантическая информация, публикуемая Flutter, в большинстве случаев недостаточна для однозначной идентификации виджетов и взаимодействия с ними. В этой статье мы рассмотрим возможности драйвера appium-flutter-driver для тестирования flutter-приложений, разберемся с использованием виджетов описания семантики и разработаем несложные тесты на Python с использованием Appium.

Читать далее

Ускоряем разработку за счет пакета Mason на Flutter

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

Привет, меня зовут Александр, и я Flutter-разработчик в агентстве InstaDev. В процессе работы постепенно пришло осознание того, как много времени приходится тратить на написание шаблонного кода. Вооружившись желанием оптимизировать процесс, обнаружил решение: актуальный и развиваемый пакет Mason. Что он умеет, как с ним подружиться, и каков был путь от hello world до гибкого и настраиваемого генератора – рассказываю в этой статье.

Читать далее

Зачем Clojure Flutter

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

”Если вам нравятся Руби, Свифт, Дарт, Эликсир, Эльм, С++, Питон или даже С, используйте их ради бога. Но выучите Кложур, и выучите его хорошо” — Дядя Боб (твит, а также твиты: 1, 2, 3).

Статей о Clojure написано много, цель этой — дать свое видение некоторых преимуществ языка для кросплатформенной разработки на Flutter. Ориентируюсь в первую очередь на dart-разработчиков, но статья может быть интересна всем, кто работает с Clojure и/или Flutter.

Читать далее

Телеграм-каналы о Flutter и Dart-разработке

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

Hola, Amigos!

Ресерчил интернет в поисках классных телеграм-каналов по Flutter и понял, что подробных и понятных дайджестов мало. Ну, справедливости ради, и самих каналов о Flutter не так уж и много. Поэтому я собрал все самые полезные тг-каналы о Flutter и заодно Dart. Надеюсь, будет полезно!

Читать далее

Как стать Flutter-разработчиком, или Почему кроссплатформа сейчас — это лучший выбор

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

Hola, Amigos!

На связи Александр Чаплыгин, Flutter Dev. В разработке я 3 года, сейчас работаю в компании по заказной мобильной разработке, за последний год делал проекты для частного медицинского центра, системы маркировок и нескольких стартапов. По свежим следам хочу рассказать о том, как попасть в мобильные разработчики, поделюсь личным опытом взлетов и факапов, приложу чек-лист по устранению ошибок новичка. Если вы начинающий специалист — эта статья для вас. Также полезно почитать заказчикам мобильных приложений, чтобы погрузиться во внутреннюю кухню проектов и команды.

Читать далее

Flutter Web и WebAssembly — ключ к тайной комнате

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

Web для Flutter-платформы с одной стороны является очень хорошо изученной платформой (поскольку Dart создавался как альтернатива JavaScript и изначально хорошо компилировался в JS и предусматривал возможности взаимодействия с JS-объектами и функциями, а также с DOM браузера), но в действительности и сейчас это Terra Incognita из-за большого потенциала интеграции с веб-платформой (как на уровне API HTML5, так и с использованием технологий WebAssembly). В этой статье мы обсудим некоторые аспекты взаимодействия Dart-кода с WebAssembly-модулями, поговорим о компиляции Flutter-приложений в WASM и о том, как можно компилировать C-библиотеку для использования во Flutter-приложениях.

Читать далее

Наводим мосты между Flutter и нативными библиотеками

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

Все вы знаете, что Flutter реализует несколько абстракций для передачи данных между Dart-кодом и кодом, связанным с оболочкой Flutter Engine на языке платформы (например, Kotlin для Android). Но в действительности у Dart есть еще один инструмент для взаимодействия с внешним миром и он может использоваться для добавления C/C++ библиотек и вызова функций из Dart-кода. Основную сложность представляет разные соглашения по кодированию типизованных числовых значений, строк и структур, но часть задач по преобразованию и работе с памятью выполняют библиотека dart:ffi и пакет package:ffi/ffi.dart, а некоторые из них могут быть выполнены самостоятельно. В статье мы рассмотрим общие принципы подключения внешних библиотек и кодогенерации для создания связываний dart-функции и классов и структур данных C.

Читать далее

Flutter: Настройка тем приложения

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

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

Читать далее

Расплывающаяся менюшка

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

Понадобилось мне в приложении меню которое появляется по нажатию на floating button. Начал смотреть, что там такого есть в этих ваших интернетах. Мне хотелось как в самсунге меню для стилуса. Поскольку я не придумал, как это гуглить правильно, я не нашел такого меню готового. Поэтому решил сделать его сам.

Читать далее

Всплывающие окна на флаттер карте или flutter_map_marker_popup

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

#Введение#
Понадобилась мне как-то карта во флаттер-приложении. Гугл и яндекс карты использовать не хотелось и оставалось только воспользоваться OSM. Ну и понадобилось добавить всплывающее окно при нажатии на маркер положения на карте, нашел как это делать для гугла и яндекса, а для flutter_mup не сразу нашел. Но оказалось есть плагин flutter_map_marker_popup.

Читать далее

Работа со списками во Flutter-приложениях (часть 2)

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


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


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

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

Flutter 3.3 — Что нового во Flutter

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

Оптимизация производительности, Dart 2.18, Wonderous App, улучшение виджетов Dart и Material, новый рендерер Impeller и многое другое!

Читать далее

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

Flutter Flame: ускоряем в 32 раза работу со столкновениями

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

Как я уже писал ранее, на FPS в Flame в основном влияют операции, производимые на CPU. Если в вашей игре достаточно много взаимодействующих объектов, то одной из самых дорогих операций будет определение столкновений. Настолько дорогой, что на экране performance-метрики она закроет собой любые другие неоптимизированные участки.

Сами авторы Flame отлично осознают, что их алгоритм – не идеальный, а просто «дающий достаточную производительность». Достаточна она, видимо, для случаев, когда у вас всего объектов 10, не более. Если же у вас что-то более сложное – тогда приятного чтения!

Читать далее

Вопрос использования ассетов в Flutter web проекте

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

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

Читать далее

Вопрос создания виджетов

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

Дизайн приложения — это создание виджетов, нестандартных, кастомных. И на этом моменте на первых порах я оказался перед выбором: писать свои виджеты или искать что-то работающее с нужным мне функционалом в пабе.

Читать далее

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

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

Поговорим об управлении глобальным состоянием с помощью Redux. Расскажу, как наиболее продуктивно связать Elementary — архитектурный пакет для Flutter — и Redux.

Читать далее

Паттерны проектирования в Dart. Часть 3

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

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

Читать далее

CherryPick DI — di библиотека для dart/flutter проектов

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

CherryPick DI

DI-контейнер – это библиотека, которая обеспечивает функциональность механизма внедрения зависимостей.

Содержание

1. Предисловие

2. Возможности библиотеки

3. Компоненты библиотеки

- 3.1. Scope

- 3.2. Module

- 3.3. Binding

4. Пример использования

5. Заключение

1. Предисловие

Первые попытки разработать свой DI для пет проектов написанных на Flutter SDK были начаты в начале 2020 года.

Сподвигло меня на этот шаг несколько причин:

1. На тот момент я не нашел DI в pub.dev с возможностью делить контейнер на scope (возможно плохо искал)

2. Упростить работу с зависимостями в проекте

3. Желание написать собственный DI

4. Иметь в арсенале простой DI (надеюсь с простым API)

Читать далее

Паттерны проектирования в Dart. Часть 2

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

В первой части статьи мы рассмотрели основные и порождающие шаблоны и особенности их реализации на Dart. Теперь пришло время поговорить о структурных шаблонах и о их реализации с использованием синтаксических конструкций языка Dart и возможностей стандартной библиотеки. Мы будем стараться исключать возможности, предоставляемые такими сущностями языка как символы и рефлексия (пакет dart:mirrors), поскольку они не поддерживаются во Flutter (но обозначим возможные их применения при использовании Dart для бэкэнда), предпочитая использовать кодогенерацию во всех ситуациях, где это возможно.

Читать далее