Как стать автором
Обновить
7.93

Dart *

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

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

Flutter ConstWidget

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

Обновление данных в интерфейсе всегда задействует немало ресурсов а его реализация может быть выполнена множеством неоптимальных способов. Повышение производительности, не только радует пользователя, но и расширяет круг целевой аудитории с более старыми устройствами. State management Как? Когда? Почему? Каким способом? Лучше всего изменять состояние виджета/древа виджетов? Сейчас можно увидеть большое кол-во различных библиотек и подходов для решения данной задачи. Вопрос обновления данных интерфейса настолько большой, что библиотеки, которые помогают с управлением состояний становятся Архитектурными подходами, паттернами, а статей про то какой подход лучше еще больше. Данное решение подойдет к любому проекту, ему не нужна библиотека и вовсе не обязательно использовать данный виджет.

Читать далее

Flutter: автоматизация UI тестирования

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

Мы — команда мобильного проекта FL.ru. В своей статье хотим познакомить вас с Flutter Driver и рассказать об автоматизации UI тестирования мобильных приложений с помощью данного инструмента.

Читать далее

gRPC + Dart, Сервис + Клиент, напишем? Часть 5: Web

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

После выхода 4й части, где мы подключили мобильное Flutter приложение к сервису Umka, я получил много вопросов от читателей, которые попробовали запустить Web версию приложения и оно в браузере не заработало.

Так будет ли Flutter приложение на базе gRPC сервиса работать в Web?

TLDR: Да, но не получится "стримить" со стороны клиента, а всё остальное будет работать. Для этого нужно сплясать с бубном преобразовать запросы на сервис и ответы с него в формат понятный для браузера. Можно использовать Envoy в качестве Web proxy, который "из коробки" поддерживает входящие/исходящие gRPC запросы.

Ниже я покажу как это сделать.

Читать далее

DartUP возвращается: открыта регистрация на самую масштабную русскоязычную конференцию по Dart и Flutter

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

Привет, Хабр! 3 и 4 декабря мы проведем DartUP — онлайн-конференцию по Dart и Flutter на русском и английском. Вас снова ждет несколько потоков докладов: спикеры из Google и других компаний, а также разработчики тулинга для Dart и Flutter поделятся новостями об экосистеме и своим практическим опытом.

Узнать больше про DartUP

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

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

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

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

Flutter: о разработке плагинов с интерфейсом ActivityAware

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


В былые времена клиенты присылали цветные изображения документов со сканера по емейлу. Кто ленился или не мог — отправлял свой загранник по почте. С этим неплохо справлялось решение от ABBYY. Потом появились телефоны и люди стали присылать фотографии паспортов. ABBYY сломался. Перешли на решение от Smart Engines и даже с фотографиями, посланными через WhatsApp особых проблем не было. Но потом пошли умные мобилки с включенными по умолчанию водяными знаками типа «Xiaomi 9T» часто перекрывающими важнейшую часть паспорта. Вдобавок к этому наличие в кадре на фотографии пальцев и бликов тормозило общение с клиентом.

Примеры паспортов, непригодных к распознаванию

Когда паспорт распознается в видеопотоке на телефоне клиента, то этой проблемы так остро не стоит. Почему?

  1. Мобильное ядро отображает рамку документа в процессе распознавания, не просто маску поверх видео, а именно рамку документа, находящегося в руках. По моим ощущениям, это дает человеку понимание, где не должно быть его пальцев. Вообще, это интересная тема для отдельного исследования.
  2. Система использует механизм сатурации данными и готова выдать результат только после определенной уверенности в них.
Читать дальше →

gRPC + Dart, Сервис + Клиент, напишем? Часть 4: подключаем мобильное Flutter приложение

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

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

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

Читать далее

Реализуем чистую архитектуру на Flutter с cubit

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

Соблюдать принципы чистой архитектуры – значит обеспечить удобство тестирования, поддержки и модернизации приложения. Понимание архитектуры и state management – это база, необходимая начинающему специалисту для успешной командной работы. В этой статье мы расскажем, как с помощью Cubit реализовать чистую архитектуру на примере стартового приложения Flutter – счетчика нажатий на кнопку. 

Читать далее

Dart Code Metrics 4.0: команды, поддержка монорепозиториев и новые правила

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

В предыдущей статье мы анонсировали Dart Code Metrics — инструмент статического анализа кода. Сегодня я расскажу про новые возможности, которые появились в Dart Code Metrics с выходом очередного мажорного обновления. Поговорим про появление команд, поддержку монорепозиториев, улучшения в интеграции с CI/CD, и, конечно же, про новые правила для анализатора. Теперь у инструмента появился сайт с документацией, его можно найти здесь.

Читать далее

Flutter: открытие виджетов ключами

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

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

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

А вы задумывались, когда нужно использовать ключ и что происходит “под капотом”? В этом руководстве мы найдем ответ, создав простое приложение для управления списком задач и отображения заголовков новостей. Вы узнаете:

- Какие бывают ключи и как они работают.

- Когда использовать ключ.

- Как работать с разными типами ключей

Читать далее

GetX for Flutter. Dependency Injection для частных случаев

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

GetX удобен. Действительно удобен, лаконичен, функционален, выразителен. Но порою его функционала не хватает.  В частности, речь об инжектировании контроллеров -Get.put/lazyPut/create/find - вот это все. Данная схема отлично работает в контексте навигации между страницами. Но не работает, например, в страницах PageView, или же при конструировании Get.bottomSheet. Ниже предлагается решение для этих случаев.

Читать далее

Инструкция: как написать собственный GitHub Action на Dart

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

Привет! Меня зовут Дмитрий Круцких, я Flutter-тимлид в компании Surf. Сегодня расскажу, как написать простейший GitHub Action, используя язык программирования Dart. 

Читать далее

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

Как перестать писать код для взаимодействия с бэкендом

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

Привет! Начну с главного - я лентяй. Я очень-очень ленивый разработчик. Мне приходится писать много кода - как для бэка, так и для фронта. И моя лень постоянно терзает меня, говоря: Ты мог бы не писать этот код, а ты пишешь... Так и живем.

Но что делать? Как можно избавиться от необходимости писать хотя бы часть кода?

Есть много подходов к решению этой проблемы. Давайте посмотрим на некоторые из них.

Ну давайте

gRPC + Dart, Сервис + Клиент, напишем? Часть 3

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

Привет, я Андрей, работаю Flutter разработчиком в компании Финам.

Продолжим развивать сервис Umka.

На примере реализации кода для проведения "экзамена" мы познакомимся с возможностью технологии gRPC передавать данные в виде потока от клиентского приложения на сервис.

Также парой-тройкой десятков строчек кода мы реализуем чат, для проведения "технического интервью".

Для этого используем возможность gRPC осуществлять двунаправленную потоковую передачу данных от сервиса к клиентскому приложению и обратно в рамках одного HTTP/2 соединения.

Читать далее

Книга по Dart 2.12

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

Всем добрый день!

Вот и добрались руки до первого поста на Хабре спустя довольно продолжительное количество времени. Согласно высказыванию - мужчина должен построить дом, вырастить сына и посадить дерево, а что же должен преподаватель? Да черт его знает! Но более чем уверен, что там будет пунктик про написание книги. А если эта книга еще и в свободном доступе...

Читать далее

gRPC + Dart, Сервис + Клиент, напишем? Часть 2

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

gRPC + Dart, Сервис + Клиент, напишем? Часть 2.

Первая часть находится здесь

Продолжим развивать сервис на основе технологии gRPC, основы которого мы заложили в первой части.

Читать далее

gRPC + Dart, Сервис + Клиент, напишем

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

Привет! Меня зовут Андрей. Занимаюсь разработкой Flutter приложений.

Написание материала вызвано желанием показать пример создания сервиса c использованием технологии gRPC в экосистеме Dart и, соответственно, Flutter. Желание периодически возникает, когда приходится испытывать "боль", при переключении на проекты, в которых до сих пор применяется REST + JSON.

Это будет короткая серия из 3-4 статей.

Читать далее

И грянул гром: эскалации, проблемы с производительностью и как мы это решали

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

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

Читать далее

Вызов кода Go из Dart с использованием cgo и Dart FFI на простом примере

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

Ключевой мотивацией для написания данной статьи является факт сильного недостатка информации (особенно в русскоязычном сообществе) по использованию cgo и Dart FFI для использования Go из языка Dart.

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

В случае если можно можно избежать экспорта go кода в Dart, то лучше воспользоваться такой возможностью, однако могут возникать случаи, когда использование уже написанного на go кода - является оптимальным решением (например вы уже знакомы с Go и Dart, и не хотите писать код на C, в таком случае есть смысл задуматься об использованием cgo и Dart FFI).

В данной статье на простом примере будет показано как можно повторно использовать код написанный на Go в языке Dart (например в приложениях на Flutter).

Что должно быть установлено:

Читать далее