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

Flutter *

Фреймворк для кросс-платформенной разработки

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

Как реализовать обрезку изображений во flutter без сторонних библиотек

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 6

Новости

Шпаргалка для QA: как тестировать Flutter-приложения

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

Привет! Меня зовут Юлия Андреева, я QA-специалист в AGIMA. Мы пилим и тестируем много Flutter-приложений. И недавно я заметила, что не все коллеги понимают специфику их тестирования. В этой статье расскажу про основные инструменты и подходы, которые мы используем. Сосредоточусь только на тех технологиях, которые уникальны для Flutter.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 2

Жизненный цикл приложения на Flutter

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

Всем привет! Сегодня с вами я, Александр Чаплыгин, Flutter dev Amiga. Расскажу вам одну  интересную тему — отслеживание состояния приложения: в фоне, закрыто или оно не активно. Вы поймете, как обрабатывать переходы в новое состояние. Также  рассмотрим 2 подхода к реализации, которые могут выручить в той или иной ситуации.

Читать далее
Всего голосов 11: ↑7 и ↓4 +3
Комментарии 0

И певец, и на дуде игрец. Или почему ChatGPT необходим стажеру

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

Привет, Хабр. Меня зовут Алексей, я разрабатываю мобильные приложения на Flutter в Пиробайте. И ради сегодняшней статьи сошлись аж две звезды, две светлых повести. Во-первых, популярность нейросетей немного приутихла, и они стали обыденным инструментом. Во-вторых, я понемногу осмыслил свой путь изучения языка Dart. О том, как эти 2 вещи умудрились пересечься, я и расскажу дальше.

Предлагаю сразу начать с главной парочки — Dart/Flutter. Когда мы говорим о кроссплатформенной разработке на Flutter, то мы говорим о… Flutter, как это ни странно. И только о нем. Если вы начинаете свой путь изучения фреймворка, то найдете много туториалов, обучалок, статей и прочего: Stateful vs stateless виджеты, BLoC vs RiverPod, основы верстки на Flutter, в конце концов. 

Если составлять список, то он покроет большинство фич разработки на Flutter. Но почему-то все забывают о, так сказать, базе — языке Dart.

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

Узнать, как запрашивать задания у ChatGPT
Всего голосов 9: ↑5 и ↓4 +1
Комментарии 10

Истории

Флаттер 3.18 | бета-релиз | Топ-8 фичей

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 3.3K

Привет! Меня зовут Саша Ворожищев, я руководитель направления Flutter/iOS в AGIMA. У одного из организаторов митапов Flutter Indore вышла хорошая статья — решили перевести ее для нашей команды и заодно для всех желающих. Дальше его текст с небольшими сокращениями, а после — небольшой комментарий от меня.

Читать далее
Всего голосов 18: ↑12 и ↓6 +6
Комментарии 1

Полное руководство по управлению навигацией во Flutter с помощью пакета go_router: часть 1

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

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

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

Рассказывать буду на примере простого проекта — Todo (заметки). Я понимаю, что таких проектов на Хабре очень много. Но, по-моему, лучшего примера не найти.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 3

Flutter. На пути к совершенству

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

Добро пожаловать в волшебный мир программирования, где каждый разработчик – не просто кодер, а настоящий магистр заклинаний и цифровых чар! Перед вами лежит карта неисследованных земель, полных таинственных «кодовых джунглей», где скрывается легендарный кракен «кодовых глубин» и много других заморских чудес.

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

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

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 2

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

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

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 11

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

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 2

Интеграция видеоплеера YouTube во Flutter

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

Hola, Amigos! Меня зовут Вова Зевеке, я Flutter-разработчик в Amiga. В одном из проектов передо мной стояла задача — интегрировать видеоплеер во Flutter- приложение, с которого можно было бы смотреть видео с YouTube. Казалось бы, подключаем  пакет youtube_player_flutter и всё готово. Но не тут-то было, я столкнулся с рядом проблем, о решении которых рассказываю в статье.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 1

Why Flutter? Почему Flutter?

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

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

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

Выбрать Flutter
Всего голосов 14: ↑9 и ↓5 +4
Комментарии 28

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 4

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

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 5

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

Открытый урок «Behaviour Tree в Unity»
Дата 8 февраля
Время 19:00
Место
Онлайн

Об одном способе реализации архитектуры крупного Flutter-приложения

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

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

В этом посте я хочу рассказать про архитектуру Flutter-приложений, о том, как мы в билайне это делаем, чего мы достигли и как это у нас работает. Поговорим о создании архитектуры, организации управления состояниями и зависимостями, о привычных и не очень методах и концепциях, затронем Mobx, GetX и Flutter modular, а также разберём всё это на живом примере — на нашем мобильном приложении для дилеров.

Мы обсудим его особенности, технические сложности, и посмотрим, как реализовать такое крупное приложение. Затем — углубимся в вопрос управления состоянием, зависимостями, приложением.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 14

Что нового во Flutter 3.16, ч.2

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

Hola, Amigos! На связи Саша Чаплыгин, Flutter-dev агентства продуктовой разработки Amiga. Это статья-перевод от автора Kevin Chisholm. Оригинал статьи читайте по этой ссылке. Первую часть статьи можно прочитать по ссылке.

Читать далее
Всего голосов 2: ↑0 и ↓2 -2
Комментарии 0

Что нового во Flutter 3.16, ч.1

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

Hola, Amigos! На связи Саша Чаплыгин, Flutter-dev агентства продуктовой разработки Amiga. 

Это статья-перевод от автора Kevin Chisholm. Оригинал статьи читайте по этой ссылке. Мы решили разбить материал на несколько частей для удобства восприятия.

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 3

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

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

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

Читать далее
Всего голосов 45: ↑38 и ↓7 +31
Комментарии 36

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

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

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

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

Читать далее
Всего голосов 13: ↑8 и ↓5 +3
Комментарии 13

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

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

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

https://github.com/PackRuble/cardoteka

https://pub.dev/packages/cardoteka

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

«Они убивают Lottie — молодцы!»

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

Привет, Хабр. Меня зовут Алексей, я разрабатываю мобильные приложения на Flutter в Пиробайте. Помимо этого увлекаюсь моушн-дизайном. В прошлый раз рассказывал о том, почему Flutter Web (не) мертв. Сегодня предлагаю продолжить наш тру-крайм в мире разработки и снова узнать кто кого убил, за что убил и убил ли вообще. Наш сегодняшний герой — инструмент для создания анимации Rive. 

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

Lottie — крайне полезный инструмент для создания анимации, однако далеко не идеальный. А когда у основного игрока начинают появляться проблемы, появляются те, кто с удовольствием начинают на него давить. Медленно, но верно подтачивая ноги глиняного колосса.

Прочитать обзор главного соперника Lottie
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 2

Вклад авторов

Работа