ar
Feedback
Сёрф Flutter-разработка

Сёрф Flutter-разработка

الذهاب إلى القناة على Telegram

Комьюнити Flutter-разработчиков Сёрф. 📚 Делимся полезными материалами и обучаем стажёров 💬 Чат → t.me/+HL9Xac3ChFhmMmZi 🧑🏻‍💻 Вакансии: career.surf.ru 📲 По вопросам @SurfAskBot

إظهار المزيد
3 176
المشتركون
لا توجد بيانات24 ساعات
+167 أيام
+2130 أيام
أرشيف المشاركات
Почему мы не любим «шапочки» 😕 Не знаю уж, кто это придумал, но внутри отдела мы символ «^» ласково называем «шапочкой» ^_^.
+6
Почему мы не любим «шапочки» 😕 Не знаю уж, кто это придумал, но внутри отдела мы символ «^» ласково называем «шапочкой» ^_^. У него, конечно, есть официальные названия — Карет или Циркумфлекс, но, согласись, шапочка звучит поприятнее. Ты уже, наверное, догадался, к чему всё это. Тема сегодняшнего небольшого поста — caret syntax и наше к нему отношение. Читай в карточках ⬆️ А вот полезные ссылки по теме: ➡️ Семантическое версионирование ➡️ Dependency_overrides ➡️ Пример из последней карточки

Приглашаем на Flutter-движ в Ереване 🐄 Обменяемся опытом, обсудим управление зависимостями в Dart и соберем портрет идеально
Приглашаем на Flutter-движ в Ереване 🐄 Обменяемся опытом, обсудим управление зависимостями в Dart и соберем портрет идеального флаттериста. 📅 26 июня, 19:00 (GMT +4) 📌 Ереван, ул. Терьяна, 105/1 (10-й корпус Национального Политехнического Университета Армении, 6-й этаж, Microsoft Innovation Center Armenia) Программа митапа: 📍 Аршак Агакарян, SimplyAI Lead Mobile — «Простое и уверенное управление зависимостями с помощью Toor» Открой для себя альтернативный способ управления зависимостями в твоих проектах Dart, который сочетает в себе безопасность во время компиляции и простоту использования. Узнай, как Toor упрощает управление зависимостями, повышает стабильность кода и обеспечивает бесперебойную разработку. 📍 Евгений Сатуров, Surf Head of Flutter — «В поисках идеального флаттериста» Каждый хочет быть профессионалом, каждый хочет работать с профессионалами. Почему же тогда задача собрать дрим-тим Flutter-разработчиков может быть настолько нетривиальной? Мы в Surf постарались по максимуму деконструировать личность того самого «идеального флаттериста» и найти ответ на вопрос — какими навыками, профессиональными и личными качествами должны обладать лучшие? Первый в мире иммерсивный доклад по Flutter-разработке, на котором каждый сможет не только высказать своё мнение по теме, но и проверить свои знания. Регистрируйся по ссылке. #мероприятия

Ищем Flutter-разработчика в команду Сёрферов 🐄 Ты будешь работать над крупными российскими и зарубежными проектами в крутой
+5
Ищем Flutter-разработчика в команду Сёрферов 🐄 Ты будешь работать над крупными российскими и зарубежными проектами в крутой команде — к слову, мы входим в топ-4 Flutter-разработчиков мира. Ценим свободу, атмосферу в команде, уважаем друг друга, экспериментируем и сводим бюрократию к минимуму. Вместе мы будем разрабатывать крутые приложения, сложные сервисы и решения с применением искусственного интеллекта. ⬆️ Смотри требования и обязанности в карточках, и ждём твоё резюме на почту job-tg@surfstudio.ru с пометкой «Вакансия Flutter». #вакансия

Митап в Батуми — done 🏄‍♀️ Спасибо всем, кто посетил наш второй митап! Публикуем первые фото с мероприятия и ждём видеозапис
+4
Митап в Батуми — done 🏄‍♀️ Спасибо всем, кто посетил наш второй митап! Публикуем первые фото с мероприятия и ждём видеозаписи выступлений (обязательно выложим в группе). Ну а Flutter Team выдыхает и идёт покорять новые волны 🏄‍♂️

Как прошёл митап в Тбилиси 🇬🇪 Спасибо всем, кто принял участие! Делимся фотографиями с митапа и рассказываем, как всё прошл
+5
Как прошёл митап в Тбилиси 🇬🇪 Спасибо всем, кто принял участие! Делимся фотографиями с митапа и рассказываем, как всё прошло, глазами Сёрферов: 🐦 Марк, Surf Flutter Engineering Manager: «Всё просто супер. Всегда приятно собираться с людьми по интересам. Особенно приятно встречаться с людьми, с которыми ты до этого был знаком только онлайн. Выступления тоже огонь, всё получилось очень живо, много вопросов. За счёт ламповой атмосферы даже получалось общаться со зрителями. Доклады у моих коллег из Яндекса и Аквелон были крайне интересные: VoIP: крайне интересный доклад с обзором решений в области VoIP. Если вам вдруг пригодится выполнить похожую задачу, то смело можете начинать с просмотра этого выступления, когда оно будет в записи. HighlishJS: Мне понравился этот доклад больше всего. Хороший рассказ про крайне нетипичную задачу и погружение в атмосферу работы над опенсорсом. Ну и, конечно, замечательно, что у нас есть теперь такая библиотека». 🐦 Женя, Surf Head of Flutter: «Спасибо всем, кто посетил наш первый Flutter-митап в Грузии. Наше первое знакомство с локальным сообществом прошло в очень уютной и камерной атмосфере. Все составляющие хорошего митапа были на месте: три спикера с интересными докладами, винтажный ковёр, от пиццы и пончиков ломились столы, а "Натахтари" лился рекой. С удовольствием послушал про то, как в Яндекс.Про реализовали VoIP-звонки, а в Akvelon – полноценный редактор кода с подсветкой на Flutter. В том, что Engineering Manager команды Surf Марк грамотно расскажет про все новшества Dart 3, я даже не сомневался. А ещё мы проверили вместимость нашего тбилисского офиса Surf: первый грузинский Flutter-митап собрал аншлаг». Ждём записи выступлений и готовимся к митапу в Батуми ✈️

Из Тбилиси — в Батуми 🐦 Не успели провести тбилисский митап, как уже анонсируем следующий — на этот раз вместе с Fox. Обсуди
+1
Из Тбилиси — в Батуми 🐦 Не успели провести тбилисский митап, как уже анонсируем следующий — на этот раз вместе с Fox. Обсудим: 🔵 Как можно создать эффект анимированного глитча без использования шейдеров и с ними; 🔵 «Популярные» ляпы, подводные камни и неочевидные ошибки, которые так или иначе встречаются на пути каждого разработчика. Записывай дату и время: 📅 8 июня, 19:00 📌 Батуми, коворкинг Kongworking, ул. Вахтанга Горгасали, 9 ➡️ Регистрируйся по ссылке. #мероприятия

Изучай обновлённый курс по Flutter 🐦 Запустили новую версию курса — новые задания, больше кейсов, чёткая ОС и другие изменен
+6
Изучай обновлённый курс по Flutter 🐦 Запустили новую версию курса — новые задания, больше кейсов, чёткая ОС и другие изменения. О некоторых из них рассказали в карточках ⬆️ А если тебе интересно, как создавался курс, читай нашу статью на Хабр. Спасибо студентам за обратную связь — постарались учесть все пожелания! #экспертный

Один из спикеров Surf Flutter Tbilisi Meetup напоминает о мероприятии! Все подробности и регистрация — по ссылке.

(барабанная дробь) 🥁 Объявляем даты летней школы! Наши комменты и сообщения только об одном — летняя школа. В этом году она
+1
(барабанная дробь) 🥁 Объявляем даты летней школы! Наши комменты и сообщения только об одном — летняя школа. В этом году она будет! На картинках делимся расписанием, а ниже напоминаем, что за школы вообще такие: 🤟 Лекции и мастер-классы по направлениям разработки, аналитики, проджект-менеджмента и тестирования; 🤟 Преподаватели — опытные Сёрферы и менторы наших стажёров и джунов; 🤟 Чатики, где обмениваются опытом и нетворкают; 🤟 Возможность закрыть практику в вузе, получить сертификат и проект в портфолио; 🤟 Из бонусов: мемы, живое общение, хорошее настроение. 🏆 Вдобавок ко всему, лучшие участники могут стать частью команды Surf! Ждём всех, кому интересны IT и мобильная разработка. Выбирай направление и регистрируйся! #мероприятия

Что такое typedef typedef — сокращение от type definition или «определение типа». В документации используется понятие «type a
+5
Что такое typedef typedef — сокращение от type definition или «определение типа». В документации используется понятие «type alias» — «псевдоним типа», которое ближе к сути. По факту мы просто создаем псевдоним (синоним) для существующего типа данных или функции с целью повышения читаемости кода (иногда эти самые типы могут быть очень сложные или ни о чем не говорящие). Это достаточно старая штука и само ключевое слово typedef также используется в C/C++. Пример для псевдонимов типов:
typedef SuggestionsState = ListenableState<EntityState<List<ProductEntity>>>;

typedef RequestBody<T> = Map<String, Map<String, T>>;

Кстати, возможность сделать так, как указано выше, появилась только два года назад в версии 2.13. Раньше typedef можно было использовать только для функций. А до версии 1.24 вы обязаны были создать typedef, чтоб передавать функцию, например, как параметр. Надо еще сказать, что псевдонимы для типов данных используются не часто, чаще можно встретить для функций, вроде таких: typedef DataWidgetBuilder<T> = Widget Function(BuildContext context, T data); typedef ColorChangeCallback = void Function(Color color);

Приглашаем на митап с Yandex Go и Akvelon 🙋 Surf Flutter Team ждут тебя на митапе в Грузии — ламповым комьюнити обсудим посл
+3
Приглашаем на митап с Yandex Go и Akvelon 🙋 Surf Flutter Team ждут тебя на митапе в Грузии — ламповым комьюнити обсудим последние апдейты Dart, обменяемся опытом и круто проведём время. 📅 1 июня, 19:00 по мск 🏢 Тбилиси, ул. Шалва Нуцубидзе, 129 (10 минут от станции метро Важа-Пшавела) Смотри программу митапа в карточках и регистрируйся по ссылке. #мероприятия

На Google I/O зарелизился Dart 3, который принёс огромное количество изменений в язык. Какие ещё фичи ждёшь в Dart?
Anonymous voting

Dart 3: что нового В подкасте Flutter Dev Podcast мы пытались предсказать, что поменяется в языке. И выпуск оказался пророческим! Flutter Engineering Manager в Surf Марк Абраменко рассказал, как новые фичи помогут на практике и как от этого изменится способ взаимодействия с языком. 👉 Смотреть, лайкать, комментировать — по ссылке. #экспертный

Late нам друг или враг? ⚠️ Иногда — враг Вместе с Sound null safety в 2021 году появилось новое ключевое слово late. Что тако
+2
Late нам друг или враг? ⚠️ Иногда — враг Вместе с Sound null safety в 2021 году появилось новое ключевое слово late. Что такое late Согласно документации, его можно использовать для двух случаев: 1️⃣ Декларирование non-nullable переменной, которая обязательно (помните об этом ⚠️) должна быть инициализирована позже. 2️⃣ Ленивая, или lazy-инициализация переменных: она происходит только при первом обращении. Немного подробнее про использовании late для lazy-инициализации Lazy-инициализацию используют по двум причинам: 🔹 Когда нужен доступ к this для инициализации объекта. Например, для создания AnimationController нам нужно передать this в параметр vsync, т. к. контроллеру нужен TickerProvider. В этом случае мы вынуждены будем использовать late: по-другому никак. 🔹 Когда хотим оптимизировать ресурсы устройства через инициализацию только действительно нужных объектов. В этом случае использовать late необязательно, но очень желательно — а иногда даже необходимо. Правда, тут есть нюансы. Подробнее на картинках 👆👆👆 ➡️ Давайте представим: вы создаёте стрим и хотите сразу создать слушателя к нему. Вроде бы все правильно и «по-взрослому», но… вы ничего не услышите 👂— переменная sub так и останется «late», она по-прежнему не инициализирована. ➡️ Чтобы исключить такую ситуацию, нужно определить подписку так, как на второй картинке. Well done! В таком виде всё будет работать. Хорошей практикой ещё будет сделать controller и sub приватными, если это возможно, но это уже тонкости. 👉 Живой пример на DartPad

Передача параметра в метод: по ссылке или по значению? Недавно в командном чатике коснулись вопроса о способах передачи парам
+4
Передача параметра в метод: по ссылке или по значению? Недавно в командном чатике коснулись вопроса о способах передачи параметра в метод. И вот вам небольшая задачка. Попробуйте определить вывод у такого на первый взгляд нехитрого кода:
class Test {
  int val;
 
  Test(this.val);
}

void main() {
  int number = 0;
  Test test = Test(0);
 
  fn1(number, test);
  print('N-$number V-${test.val}');
 
  fn2(number, test);
  print('N-$number V-${test.val}');
}

void fn1(int number, Test test) {
  number = 1;
  test.val = 1;
}

void fn2(int number, Test test) {
  number = 2;
  test = Test(2);
  print('N-$number V-${test.val}');
}

Правильный ответ: N-0 V-1 N-2 V-2 N-0 V-1 Ссылка из бонус-сектора карточек — статья Numbers in Dart.

Как Flutter Team пилил стриминг 💻 В новой статье на Хабре рассказываем про наш стриминг на Flutter — проект The Hole. В процессе встретили немало проблем: недостаточная функциональность пакета видеоплеера, сложности с реализацией фичи картинка-в-картинке, специфические для платформ ошибки. Были специфичные для Flutter баги. И были засады, которые специфичны для натива. Читай статью по ссылке 👈🏻

Записи лекций с первого дня Flutter Weekend Study Jam 👨‍💻 Кто не успел или не попал на первый день Study Jam, выкладываем в общий доступ лекции Сёрферов. Приятного просмотра! 📌 Асинхронность и параллельность в Dart. Изоляты на базовом уровне Артём Ефименко, Flutter TeamLead 📌 Архитектура для чайников Марк Абраменко, Flutter Engineering Manager 📌 Подход к решению задач: проектирование, декомпозиция, написание плана реализации Дмитрий Шевченко, Flutter TechLead

Прямой эфир: что нового в Android и чем нам помогут нейросети 📱 Обсудим нововведения Android 14 и использование нейросетей в
Прямой эфир: что нового в Android и чем нам помогут нейросети 📱 Обсудим нововведения Android 14 и использование нейросетей в нативной разработке в прямом эфире! У микрофона: — Алексей Рябков, Surf Android TeamLead — Герман Прошунин, Surf Android Developer — Максим Кругликов, Surf Android Developer — Кирилл Розов, Tinkoff Staff Engineer, автор YouTube-канала Android Broadcast 📅 14 апреля, 17:00 по мск 📌 YouTube-канал «Surf Tech» Ждём всех 😉

Коллеги организуют прямой эфир, присоединяйтесь 👍