Обновить
7

Dart *

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

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

Как я повысил производительность flutter приложения с помощью FragmentShader. Часть 1

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели2.7K

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

Читать далее

Why Flutter? Почему Flutter?

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели15K

Почему Flutter должен быть выбран в качестве фреймворка для вашего следующего проекта?

Разбираем популярные высказывания о несостоятельности Flutter как технологии и доказываем обратное.

Выбрать Flutter

Полиморфизм в языке Dart

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели3.6K

Полиморфизм в языках программирования и теории типов — способность функции обрабатывать данные разных типов

Читать далее

Погружение в мир адаптивной верстки с Flutter

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

Я Магин Максим, Flutter-разработчик агентства мобильной разработки Instadev. Поговорим о таком понятии как “адаптивная верстка”. Разберем, для чего она нужна, чем отличается от других видов верстки и какие подводные камни могут встретиться при использовании.

Каждый разработчик так или иначе сталкивался с вопросом - как сделать качественный UI, который будет хорошо себя показывать на различных устройствах. Даже среди смартфонов существует большое разнообразие размеров – одни шире, другие – длиннее. Понятное дело, что для каждого устройства уникальный код не напишешь. А что делать, если среди устройств необходимо учесть еще и планшеты, где действуют уже другие правила расположения и масштабирования элементов? Есть ли универсальное решение? Но обо всем по порядку.

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

Существует 4 основных подхода к верстке: фиксированный, резиновый, адаптивный и отзывчивый. Каждый из этих подходов имеет свои плюсы и минусы. Разберем их чуть подробнее.

Фиксированный подход

Его суть  заключается в том, чтобы задать жесткие размеры и расстояния для всех элементов, отображаемых на экране. Иными словами мы “фиксируем” положение каждого виджета на экране. Преимущество очевидно – мы всегда знаем величину того или иного используемого элемента. С другой стороны, если мы возьмем устройство, которое хоть немного отличается размером от того, на котором мы производим тесты, все наши расчеты оказываются неподходящими для него: в лучшем случае, может появиться больше пустого пространства или, наоборот, элементы сильно прижмутся друг к другу, в худшем – мы получим ошибку рендеринга. Это говорит нам о том, что в чистом виде данный подход лучше не использовать.

Читать далее

Управляем навигацией во Flutter с помощью библиотеки auto_route: часть 2. Guards, Wrappers и миграция

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.1K

Привет, Хабр! Меня зовут Юрий Петров, я Flutter Team Lead в Friflex. Это продолжение моей статьи про библиотеку auto_route. В этой статье, я попробую пояснить, что такое охранники(guards), обертки (wrappers) и с чем вам придется столкнуться в легаси проектах при миграции на auto_routе_7.

Читать далее

Патерн проектирования Фасад в Dart/Flutter

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели4.6K

Шаблон фасад (англ. Facade) — структурный шаблон проектирования, позволяющий скрыть сложность системы путём сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы.

Читать далее

Flutter и фриланс в школе

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

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

Читать далее

Правильное понимание Single Responsibility Principle (SRP) в Dart/Flutter

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели7.8K

SRP оказался самым сложным принципом из всех SOLID принципов в понимании и как в следствии неправильное применение в кодировании. Множество разработчиков уровня junior / middle, которых я собеседовал на позицию Flutter разработчика давали ответ, что SRP - это принцип единой отвественности. Это конечно правильный ответ согласно книги Роберта Мартина "Чистая архитектура". Но мне хотелось услышать как понимает этот принцип наш кандидат в разработчики. Ведь от этого зависит расширяемость и простота читаемости нашего проекта, ведь мы расширяем команду и хотелось бы чтоб мы писали код в единой концепции. В большинстве случаев разработчики понимают этот принцип, как класс, который он создал должен содержать только один метод. И всё что мы написали в этом методе, несёт единственную ответственность, ведь он решает одну задачу. И на этом кандидат заканчивает свою мысль. Ну что же, неплохо, но и не совсем правильно. Да, такой принцип тоже есть, но он применяется на низшем уровне системы. Действительно для удобства чтения не надо всё сваливать в один метод. Практичнее будет если мы каждому методу разрешим делать что то одно и название этого метода будет понятно другому разработчику, что делает этот метод. SRP же применяется на среднем уровне программы. В общем, я делаю вывод что кандидат не читал книгу "Чистая архитектура", либо это делал очень невнимательно...

SRP это про другое! Сам Роберт Мартин столкнулся с такой же проблемой, неправильное понимание того, что он имел ввиду под SRP и попробовал её решить, написав другое определение и разъяснение к нему. Давайте почитаем!

Читать далее

Я сделал Cardoteka и вот как её использовать [кто любит черпать]

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели2.4K

Привет! Самое время в предновогоднее настоящее поделиться с вами опенсУрс проектом :) Встречайте -> Cardoteka <- строгая типизированная обёртка над Shared Preferences (SP) в мире Flutter. Этот материал будет коротким, с рекламными нотками (а точнее, приглашающий к дискуссии в issues и в комментарии) и readme-подтекстом. Так или иначе, это заслуженная метка "Обзор".

https://github.com/PackRuble/cardoteka

https://pub.dev/packages/cardoteka

Читать далее

Автоматизированное тестирование событий аналитики в мобильном приложении: насколько это реально и оправдано

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

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

Читать далее

Just DUIT — первый взгляд на server-driven UI фреймворк для Flutter

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.5K

Зачастую мобильные разработчики сталкиваются с проблемой невозможности быстрого delivery какой-то функции до пользователя. Для обхода этого ограничения мобильных платформ существуют самые разные инструменты и подходы: DivKit, СodePush и другие. И сегодня я хочу осветить новый Server-driven UI фреймворк для Flutter, который в некоторой степени может разрешить эту боль.

Just DUIT!

Transition Animation: настраиваем анимацию переходов во Flutter

Время на прочтение4 мин
Охват и читатели6.9K

Привет! Меня зовут Айдар Мавлетбаев, я Flutter-разработчик в AGIMA. Современное приложение почти невозможно представить без анимации. И один из ее типов — Transition Animation, или анимация переходов. Ее используют, чтобы переход с одной страницы на другую был плавным и красивым. В этой статье разберем две библиотеки от Flutter: go_router и animation.

Читать далее

Создаем federated plugin для Flutter-проекта

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели3.5K

Всем привет! Это Мурат Насиров, Flutter-разработчик в Friflex. Мы разрабатываем высоконагруженные мобильные приложения для бизнеса и специализируемся на Flutter. В этой статье я рассказываю о том, как создать federated plugin для Flutter-проектов.

В мае 2022 года на Google I/O был представлен урок по созданию federated plugin в Flutter. Federated plugin — это способ разделения функционала в рамках одного плагина на разные платформы. Он позволяет сегрегировать функционал на зоны ответственности для каждой из платформ. 

К примеру, если мы создаем плагин для работы с bluetooth, тогда нужно будет создавать пакеты отдельно для каждой платформы, то есть: flutter_bluetooth (как пакет flutter), flutter_bluetooth_android, flutter_bluetooth_ios и flutter_bluetooth_platform_interface (интерфейс для работы с платформами). 

Создавая federated plugins для всех платформ, разработчики могут использовать только те из них, которые необходимы. 

Читать далее

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

Flutter: почему он стал таким популярным и нужно ли изучать его прямо сейчас

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели19K

Привет, Хабр! Мы в компании Friflex запустили подкаст «Гости из IT». Вместе с ведущим Антоном Комоловым и экспертами из разных областей IT мы разбираемся в технологиях, и как они меняют нашу жизнь и работу. 

Сегодня делимся размышлениями Юрия Петрова, автора YouTube-канала «Мобильный разработчик» и Flutter Team Lead в Friflex, и Ильи Вирника, руководителя сектора разработки продукта «Такси» в Яндекс Про. 

Обсуждаем, чем Flutter хорош для крупного и малого бизнеса, почему это перспективное направление для построения карьеры в IT и в чем особенность языка Dart, на котором пишутся Flutter-приложения.

Читать далее

Как я стал Google Developer Expert по Flutter

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.1K

У Google есть программа для экспертов в их технологиях. Чтобы попасть в неё, нужно выступать, писать, обучать, менторить или делать open-source в технологиях Google. Программа называется “Google Developer Experts”, и это самое привилегированное сообщество разработчиков, о котором я знаю.

Читать далее

Хитрый виджет: разбор тестового Flutter-задания. Детективная нуар-история

Уровень сложностиСредний
Время на прочтение24 мин
Охват и читатели4.3K

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

«Введённое сегодня утром чрезвычайное положение из‑за аномальных метеоусловий остаётся в силе на территории всего штата. Метель свирепствует в городе третий день, и конца ей пока не предвидится» — тревожно вещал радиоприёмник. На облачное небо медленно взбирались наполненные тревогой сумерки.

Полиция прибыла на место происшествия в мотель «Burnout Meteo Inn» за час до меня. В 911 сообщили о подозрительном…

Читать далее

OpenStreetMap в Flutter-проекте: что такое flutter_map, как его внедрить и чем дополнить

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели14K

Всем привет! Меня зовут Анна Ахлёстова, я Flutter-разработчик в Friflex. Ранее мы обсудили, как использовать инструменты yandex_mapkit в Flutter-проекте. В этой статье рассмотрим еще один плагин для работы с картографическими сервисами – flutter_map, изучим его возможности, преимущества перед аналогами и реализуем простой проект в качестве примера.

Если вы начнете искать удобный, адаптированный под Flutter картографический сервис, основными результатами поиска будут GoogleMaps API и Yandex Mapkit SDK.

Их популярность в целом оправдана – они предоставляют обширный список функций: начиная от простого отображения самой карты и объектов на ней и заканчивая функциями геокодирования и навигации. Помимо этого сами карты достаточно точны и детализированы, что немаловажно для конечного пользователя. 

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

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

Для Flutter-проектов есть еще одно решение – применять OpenStreetMap. 

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

Читать далее

Flutter 3.16: обзор обновления фреймворка с комментариями разработчиков Surf

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

Привет, на связи команда Flutter-разработчиков Surf. Мы регулярно делимся с сообществом последними новостями о Dart и Flutter, и этот случай — не исключение. Предлагаем перевод официального материала о большом обновлении Flutter 3.16. Дополнили его своими комментариями.

Читать далее

Анонс Dart 3.2

Время на прочтение6 мин
Охват и читатели5.2K

Улучшены языковые возможности и опыт разработчиков, а также обновлена информация о веб-приложениях и Wasm

Авторы: Kevin Moore & Michael Thomsen

Сегодня мы анонсируем Dart 3.2, в котором появилась новая языковая функция для non-null продвижения приватных конечных полей, улучшен опыт разработчиков за счет новых возможностей взаимодействия, поддержка расширений в DevTools, а также обновлен дорожный план веб-разработки, включающий поддержку Wasm (aka WebAssembly).

Что новенького!

Новый линт в Dart 3.2

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.6K

Разбираем новый линт annotate_redeclares и новую конструкцию 'extension type', которая пока доступна в Dart 3.2 под экспериментальным флагом.

Читать далее