Pull to refresh
19
3
Mad Brains @madbrains

IT-компания

Send message

Generics в Dart

Level of difficultyMedium
Reading time4 min
Views1K

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

Читать далее

Такие разные Slivers. Часть 5: аналоги обычных виджетов

Reading time2 min
Views742

Мы подошли к заключительной части нашего цикла о сливер-виджетах во Flutter. За прошедшие статьи мы разобрали множество различных типов сливеров, от списков и сеток до гибких решений для управления размером и поведением элементов. В этой финальной статье мы познакомимся со сливер-виджетами, которые являются аналогами обычных (box-based) виджетов, выполняя схожие функции, но для работы в прокручиваемых структурах. Эти элементы расширяют возможности управления видимостью, анимациями и декорациями, предоставляя дополнительную гибкость при создании сложных интерфейсов.

Читать далее

Такие разные Slivers. Часть 4: гибкое управление элементами

Level of difficultyMedium
Reading time4 min
Views842

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

Читать далее

Такие разные Slivers. Часть 3: работа с пространством

Level of difficultyMedium
Reading time2 min
Views612

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

Читать далее

Такие разные Slivers. Часть 2: базовые классы и делегаты

Level of difficultyEasy
Reading time3 min
Views875

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

Читать далее

Такие разные Slivers: обзор и применение во Flutter. Часть 1

Level of difficultyMedium
Reading time4 min
Views2K

Всем привет! На связи Арсен, Flutter-разработчик Mad Brains. Многие из вас наверняка уже знакомы с Slivers, ведь это мощный инструмент для создания динамичных и адаптивных прокручиваемых областей в приложениях Flutter. В этом цикле статей рассмотрим все существующие sliver-виджеты во Flutter, чтобы познакомиться с каждым из них, понять, какие задачи они решают, и как их можно применять. Мы не будем углубляться в детали, дабы не усложнять материал, а обозначим основные особенности и отличия каждого сливера, чтобы понимать, какие вообще существуют и в нужный момент воспользоваться ими. Итак, погнали!

Читать далее

Нюансы Const в Dart

Level of difficultyMedium
Reading time4 min
Views1.4K

Const — важное и полезное ключевое слово в Dart, но оно не такое простое, как кажется на первый взгляд. Весь опыт работы с ним собрал Николай Омётов, руководитель Flutter-разработки компании Mad Brains.

Const — это хорошо: для объектов — это возможность быть вычисленными во время компиляции, всегда быть в одном экземпляре и никогда не мутировать/изменяться, так как они immutable.Отсюда и правило Linter'a prefer_const_constructors.

Читать далее

Редко, но метко! Пять малоизвестных виджетов

Level of difficultyMedium
Reading time5 min
Views2.1K

Flutter предлагает множество виджетов. Одни используются почти в каждом проекте, другие остаются без внимания из-за специфичности или редких сценариев применения. В этой статье расскажем о пяти малоизвестных виджетах: PhysicalShape, Offstage, Flow, 
UnconstrainedBox, SizedOverflowBox.

Читать далее

Оптимизация архитектуры: делим крупные классы с помощью миксинов

Level of difficultyMedium
Reading time4 min
Views2.2K

Всем привет! Это статья для тех, кто интересуется таким фреймворком, как Flutter. А написал ее я, Николай Омётов, руководитель Flutter разработки IT-компании Mad Brains. Сегодня обсудим, как делить большой файл класса с помощью миксинов. 

Для начала давайте разберемся, зачем вообще делить большой файл класса?

Причин несколько: во-первых, чтобы было удобно читать и рефакторить код. Во-вторых, чтобы уменьшить количество конфликтов при merge и разделении истории git в конкретном файле. Согласитесь, отследить историю изменений в разных маленьких файлах удобнее и быстрее, чем в одном большом, с разнообразием изменений. 

Читать далее

Макросы на Dart: первые ощущения от использования и лайфхаки на будущее

Level of difficultyMedium
Reading time13 min
Views3.4K

Макросистема Dart — это новая важная языковая функция. Она добавляет поддержку статического метапрограммирования в язык Dart, но в настоящее время находится в разработке.

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

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

Читать далее

Факапы аналитиков: где они обитают? Кейсы Mad Brains

Level of difficultyMedium
Reading time4 min
Views3.8K

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

Для начала немного вводных: а на каких этапах могут всплывать ошибки?

Интервью
Если после встречи с заказчиком становится ясно, что в логике приложения есть несоответствия или мы собрали недостаточно данных, надо вернуться к клиенту за уточнениями. Иногда его триггерит, но по факту — это самые безобидные потери. Факап во время проектирования ТЗ или разработки — намного хуже. 

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

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

Ошибки после релиза
Самый худший сценарий: если проблема найдена после того, как проект выкатили в прод, значит аналитики сработали плохо. Ошибки исправляются за счет исполнителя. 

Читать далее

Тик-так: Timer vs Ticker для анимаций

Level of difficultyEasy
Reading time4 min
Views1.1K

Всем привет! Это статья для тех, кто увлекается Flutter-разработкой. А я Николай —человек, который рулит этим направлением в Mad Brains. Поговорим о Timer и Ticker?

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

Читать далее

Законы UX-дизайна: что делает пользователей счастливее, а продукт лучше

Level of difficultyMedium
Reading time4 min
Views6.1K

Всем привет! Меня зовут Антон, и я аналитик Mad Brains. Сегодня расскажу о законах человеческой психологии и восприятии, помня о которых можно создать действительно хороший UX‑дизайн. Погнали.

Читать далее

Padding vs SizedBox. Что выбрать для вёрстки отступов Column и Row

Level of difficultyMedium
Reading time5 min
Views4.8K

Здравы будьте! С вами на связи руководитель Flutter-направления Mad Brains Николай Омётов. В этой статье я проведу разбор особенностей вёрстки отступов с помощью Padding и SizedBox и расскажу, что выбрала наша команда для создания единого стиля кода.

Читать далее

Устроили 30-дневный челлендж и узнали много нового

Level of difficultyEasy
Reading time3 min
Views2.7K

Как и во многих ИТ-компаниях, у нас распределённая команда: работаем из разных городов и даже стран. Удалёнка даёт мобильность, но создавать единую атмосферу, чтобы быть с коллегами на одной волне, становится сложнее. Сотрудники зачастую коммуницируют друг с другом только по рабочим вопросам, а иногда — только в чат-переписке. В качестве эксперимента опробовали формат корпоративного челленджа в последний месяц лета. Что из этого вышло, рассказываем в статье.

Читать далее

Как создать свой VPN, если вы в России, и почему мы отказались от этой идеи

Level of difficultyEasy
Reading time9 min
Views37K

В феврале команда Mad Brains задалась вопросом: «Почему бы не создать собственный VPN?». Опирались на гипотезу, что VPN нужен для доступа к российским сервисам и внутри страны, и тем, кто уехал. Провели масштабное продуктовое исследование и отказались от разработки. Почему так решили, рассказали Rusbase, а депутат Госдумы Антон Горелкин предложил создать национальный VPN, ссылаясь на нашу статью.

Читать далее

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

Level of difficultyMedium
Reading time21 min
Views4.8K

Команда Flutter-разработчиков Mad Brains продолжает рассказывать про паттерны проектирования на Dart. Использование паттернов проектирования помогает разработчикам создавать более масштабируемое и сопровождаемое ПО, а также улучшать читаемость и содержательность кода. Первую часть статьи можно прочитать тут.

Читать далее

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

Level of difficultyMedium
Reading time10 min
Views9.6K

Если вы занимаетесь программированием на Flutter, то наверняка сталкивались с задачами, которые можно было бы решить более эффективно и легко, используя уже проверенные практиками решения. В этом и помогают паттерны проектирования на Dart — шаблоны, которые разработчики применяют для решения часто встречающихся проблем. В двух статьях команда Mad Brains рассмотрит 16 паттернов проектирования на Dart, как они могут быть использованы для улучшения качества кода и повышения эффективности разработки.

Читать далее

Шесть открытых библиотек от Mad Brains, которые упростят жизнь Flutter-разработчика

Level of difficultyMedium
Reading time4 min
Views2.8K

Работая над разнообразными бизнес-задачами с помощью Flutter, мы часто сталкиваемся с отсутствием готовых решений. Поэтому команда Mad Brains создает собственные и делится ими с ИТ-сообществом. В этом материале мы рассказываем, как наши библиотеки помогают Flutter-разработчикам и бизнесу.

Читать далее

10 популярных вопросов, которые нужно знать, чтобы пройти собеседование на позицию Flutter-разработчика

Reading time9 min
Views19K

Привет, на связи Flutter-команда Mad Brains. Сегодня мы разберём 10 часто задаваемых вопросов на собеседованиях на позицию Junior Flutter Developer. Наш ведущий Flutter-разработчик расскажет, как показать себя во всей красе и получить оффер. А в конце статьи вас ждет приятный бонус от нашей команды. 

1. Зачем вообще использовать Flutter? Какие у него преимущества недостатки?
Можете взять примеры, которые представлены на официальном сайте Flutter. Но из своего опыта отметим несколько важных поинтов. Во-первых, у Flutter есть несомненный плюс — это единая кодовая база, которая позволяет увеличить скорость разработки. Благодаря этому у него высокая масштабируемость, потому что почти 100% кода портируется на Android, iOS, Web, Desktop и т.д.

Немаловажным плюсом является декларативная верстка, которая позволяет писать намного более понятный и логичный код. Еще одна  особенность, которая сейчас есть и на Kotlin, — это Hot reload и Hot restart. Нет необходимости сидеть и ждать компиляции, чтобы увидеть изменения, что дает сильный буст в скорости разработки и позволяет оставаться в потоке. Кто использовал их, знает, насколько это крутая штука и насколько это сокращает время разработки. 

Не стоит забывать, что у Flutter сформировано большое комьюнити, есть хорошая поддержка от Google, огромное количество библиотек на pub.dev и статей. Это тоже плюс, хотя еще пару лет назад молодость технологии была ее минусом. 

Из минусов выделим высокие требования к специалистам. Мы хоть и можем писать сразу под Android и iOS, но обязаны знать основы нативной разработки. Поэтому среди требований к Flutter-разработчику можно увидеть базовые знания одной из платформ. 

Читать далее
1

Information

Rating
1,453-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity