flutter compose up – Telegram
flutter compose up
3 subscribers
64 photos
5 videos
31 links
Канал, где я храню интересные статьи/библиотеки из мира Flutter.
Если вам интересно, можете тоже читать
Download Telegram
# Задача 001

Даны две бесконечных возрастающих последовательности чисел A и B. i-ый член последовательности A равен i^2. i-ый последовательности B равен i^3.

Требуется найти C_x, где C — возрастающая последовательность, полученная при объединении последовательностей A и B. Если существует некоторое число, которое встречается и в последовательности A и в последовательности B, то в последовательность C это число попадает в единственном экземпляре.

# Формат ввода

В единственной строке входного файла дано натуральное число x (1 <= x <= 10^7).

# Формат вывода

В выходной файл выведите C_x.

# Решение
int findCx(int x) {
int i = 1, j = 1; // Начальные индексы для квадратов и кубов
int count = 0; // Счетчик найденных элементов
int current = 0; // Текущий элемент последовательности C

while (count < x) {
int square = i * i;
int cube = j * j * j;

if (square < cube) {
current = square;
i += 1;
} else if (square > cube) {
current = cube;
j += 1;
} else {
current = square; // или current = cube, значения равны
i += 1;
j += 1;
}

count += 1;
}

return current;
}


#algorithm
Forwarded from Surf Flutter Team
Каркас фичи за 7 секунд. Чем может быть полезен mason?

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

Никто не любит бойлерплейт: для старта проектов появляются шаблоны, как, например, Surf Flutter App Template, для небольших кусков кода существуют Snippets (VSCode) и Live Templates (IntelliJ IDEA, Android Studio).

Но что, если этих инструментов недостаточно? Если есть потребность в более гибком инструменте для генерации шаблонного кода?

Мы во Flutter-команде Surf задались этими вопросами, и пришли к mason — мощному и гибкому генератору кода по шаблонам. И сейчас покажем, как его использовать.

Ссылки из карточек:
🔵 mustache
🔵 mason_cli
🔵 BrickHub
🔵 Синтаксис brick

#surf_flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Если у вас VS Code тормозит из-за каких-то расширений, то есть такое:

F1 -> Developer: Open Process Explorer
F1 -> Developer: Show Running Extensions

и вообще:

F1 -> Developer: ...

#vscode
Forwarded from Дневник Flutter-разработчика (Dmitry Lyovochkin)
🧑‍🎓 Школа Мобильной Разработки Яндекса 2024. Записи лекций

Команда Яндекса делится опытом в разработке на Flutter:)
Все вышедшие на сегодняшний день лекции:

1️⃣ Флаттер-мастерская: опыт команд Яндекса в разработке на Flutter — ШМР 2024
Для чего Flutter используют в Яндекс Драйве и Яндекс Маркете? Как Flutter показал себя в Практикуме? Есть ли будущее у Flutter в Такси?

2️⃣ Асинхронка — ШМР 2024
Асинхронное программирование в дарте. Future, FutureOr, Stream, async, await, yield, Zone... Как это всё работает? Копаем вглубь, ломаем стереотипы, убираем магию.

3️⃣ Architecture. Часть 1: App Architecture Overview — ШМР Flutter 2024
Лекция в широком смысле рассказывает об архитектуре как явлении и указывает, о чём важно помнить при проектировании приложения

4️⃣ Architecture. Часть 2: Flutter, State Management, существующие решения — ШМР Flutter 2024
На лекции мы обсудим идею state management в целом, ее архитектурные особенности при работе с состоянием. Обсудим популярные подходы к state management и самые популярные реализации. Сравним их по критериям, важным для масштабируемого приложения. Наконец, обсудим, какие решения лучше подходят для конкретных кейсов.

5️⃣ Flutter Internals: что происходит под капотом фреймворка — ШМР Flutter 2024
Как виджеты превращаются в пиксели на экране? Почему Flutter еще не переписали на Kotlin? Что круче — Skia или Impeller?

6️⃣ Animations — ШМР Flutter 2024
Спикер: Глеб Осотов, Flutter-разработчик Яндекс Про
На лекции мы рассмотрим, зачем нужны анимации в приложениях, как они устроены во Flutter. Вы узнаете не только какие виды анимаций можно использовать во Flutter, но и как они устроены внутри.

7️⃣ Пакеты, плагины и версионирование — ШМР Flutter 2024
Спикер: Даниил Артамонов, руководитель группы мобильной разработки Яндекс Лавки
В рамках лекции мы познакомимся с пакетами, плагинами и другими способами делиться кодом между проектами на Dart. Познаем семантическое версионирование и научимся управлять зависимостями в больших проектах; Для этого погрузимся в инструментарий Dart и Flutter cli.
Научимся публиковать свои пакеты для общего и не очень доступа и изучим
pub.dev.


8️⃣ Кодогенерация — ШМР Flutter 2024
Спикер: Константин Федуров, Flutter-разработчик Яндекс Про
В лекции рассмотрим, как работают и как использовать пакеты для кодогенерации, научимся исследовать код и покажем это на демо. Вместе с этим мы узанем как работает анализатор, и как мы можем писать свои правила для увеличения качества кода нашего проекта.


9️⃣ Router и прямые ссылки в приложении — ШМР Flutter 2024
Спикер: Дмитрий Золотов, Flutter-разработчик Яндекс Доставки
На лекции мы научимся использовать навигацию на основе Router, разберем какие бывают диплинки и как их правильно обрабатывать, а также посмотрим на особенности Flutter Web в обработке ссылок и настройки стратегии навигации.


1️⃣0️⃣ Тестирование — ШМР Flutter 2024
Спикер: Андрей Смирнов, Flutter-разработчик Яндекс Про
В этой лекции мы научимся писать Unit-тесты, UI-тесты, интеграционные тесты и узнаем, что такое golden тесты. А также разберем, что такое code coverage и научимся его собирать.


1️⃣1️⃣ Push Notifications — ШМР Flutter 2024
Спикер: Евгений Седанов, руководитель группы мобильной разработки Яндекс Про
Пуши и уведомления - это одно и то же? Может ли быть пуш без нотификации и нотификация без пуша? Что такое TTL пуша и почему пуши могут потеряться? Какие есть различия в пуш уведомлениях на Android и iOS? Можно ли выполнить Dart код по пушу или даже запустить приложение? Что такое VOIP пуши и чем они отличаются от обычных? Всё это и многое другое вы узнаете на этой лекции.


1️⃣2️⃣ Build and release — ШМР Flutter 2024
Спикер: Никита Березовский, Flutter-разработчик Яндекс Про
На лекции мы разберёмся с CI/CD и настроим пайплайн для github actions. Разберем что нужно знать чтобы довести приложение до релиза в сторы. Узнаем как наш код превращается в приложение: начиная с вызова flutter build и до запуска конечного артефакта.


Весь список лекций ШМР 2024: https://www.youtube.com/playlist?list=PLXtiZNKIobF4R3g_CCVkXgaMDg4E4pxeH
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Валидация названий commit-ов

Недавно затащили к себе в проект gitlint. Оказалась прям годной штукой. Довольно шустро работает, подробная дока. Ему можно скормить названия через пайпы обычным текстом, а можно подтягивать имена коммитов через git. Есть встроенные проверки по типу длины строки, conventional commits и т.д.

Но самое клевое, что можно писать свои плагины. Мы у себя в проекте сделали проверку названий контекстов - тупо на питончике проходимся по определенным папкам в проекте и используем их названия как список допустимых значений. Больше никаких тыканий на ревью, что и как нужно называть. Чистый кайф🤤🤤🤤

#git #python #gitlint
Media is too big
VIEW IN TELEGRAM
Мега крутое выступление Вячеслава Егорова про то как работает среда выполнения Dart.
Из выступления вы узнаете:
✔️ Как работает компилятор в Dart
✔️ Что такое IRHydra 2
✔️ Как вызывать Dart код из Swift
✔️ Как в Swift реализовать горячую перезагрузку c помощью Dart кода
✔️ Как в Jetpack compose реализовать горячую перезагрузку ч помощью Dart кода
✔️ Некоторые умопомрачительные новые функции которые знает только команда Dart

📌 Смотреть на VK:
https://vk.com/flutter_na_ruskom
📌 Оригинал:
https://www.youtube.com/watch?v=jV2Zx3hjHPc

#dart #mraleph
Please open Telegram to view this post
VIEW IN TELEGRAM
# Задача 002

На входе предоставляется список целых чисел. Необходимо сжать список в строку, объединив последовательные числа в диапазон. Если в списке есть числа, которые не являются последовательными, они должны быть выведены отдельно. Если в списке есть только одно число, оно должно быть выведено отдельно.

# Формат ввода:
Список целых чисел, разделенных запятыми или пробелами. Список может быть пустым.

## Примеры ввода:
[1, 4, 5, 2, 3, 9, 8, 11, 0]
[1, 4, 3, 2]
[1, 4]
[]

# Формат вывода:
Строка, содержащая сжатые диапазоны чисел, разделенные запятыми. Если в списке есть только одно число, оно должно быть выведено отдельно. Если в списке нет чисел, должна быть выведена пустая строка.

## Примеры вывода:
"0-5,8-9,11"
"1-4"
"1,4"
""

String compressRanges(List<int> nums) {
// Если список пустой, сразу возвращаем пустую строку
if (nums.isEmpty) {
return "";
}

// Сортируем числа
nums.sort((a, b) => a.compareTo(b));
List<String> result = [];
int start = nums[0];
int end = nums[0];

for (int i = 1; i < nums.length; i++) {
if (nums[i] == end + 1) {
// Если текущее число продолжает диапазон
end = nums[i];
} else {
// Если диапазон прерывается, добавляем его в результат
if (start == end) {
result.add(start.toString());
} else {
result.add("$start-$end");
}
start = nums[i];
end = nums[i];
}
}

// Добавляем последний диапазон
if (start == end) {
result.add(start.toString());
} else {
result.add("$start-$end");
}

// Объединяем диапазоны в строку
return result.join(",");
}

#algorithm
Forwarded from Vue-FAQ
Как выяснилось, за последний год в мире API клиентов случилась почти что революция

Вышел в open source Yaak (React, Tauri), релизнулся и активно развивается вполне достойный Bruno (Next.js, Tauri) и наконец-то появилась десктопная версия Hoppscotch (Vue 3, Tauri).

Hoppscotch пока в альфа версии, но вполне хорошо работает и решены проблемы с прокси для запросов. Дистрибутив занимает всего 10Мб (у Yaak 120Mb, у Bruno - 40Mb). На скриншоте, сколько они отъедают памяти в холостом режиме. Ну и просто какой-то бенефис Tauri.

Yaak и Bruno полностью оффлайновые, поэтому их UI работает очень быстро, Hoppscotch синхронизирует данные в облаке, поэтому есть небольшая задержка, но в целом хорошо.

По функционалу с большим отрывом лидирует Hoppscotch, за ним - Bruno

Мир устал от жирного, жадного и неповоротливого online-only Postman-a. Попробуйте эти клиенты и забудьте Postman как страшный сон.

#hoppscotch #yaak #bruno #api #tauri #postman
Forwarded from Flutter. Много
Hola, Amigos!

На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня рассмотрим некоторые базовые концепции пакета rxdart. Он позволяет нам работать с потоками данных еще эффективнее, так как добавляет много всего полезного.

RxDart - пакет от компании ReactiveX, которые до него уже сделали много популярных библиотек для других языков программирования. Например, RxJava или RxSwift. Но так как в Dart уже есть стримы, их не добавляли, но дополнительно улучшили, добавив методы расширений и новые типы потоков данных.

Давайте посмотрим для начала на то, как мы можем добавить буферизацию к нашему Stream. Допустим, что у нас есть поток данных, который выдает информацию достаточно часто, а нам нужно получать ее не по одному, а сразу несколько штук. Для этого мы можем воспользоваться добавлением еще одного потока данных, который будет отмерять время, просто передать количество, функцию для определения конца отрезка или необходимый отрезок времени, а функции buffer, bufferCount, bufferTest и bufferTime вернут нам список данных, который накопился.

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

А что делать, если нужно объединить несколько потоков данных? Для этого у RxDart заготовлены несколько конструкторов. Например, MergeStream, который просто добавляет события из всех стримов в себя, или CombineLatestStream, который позволяет производить какие-либо вычисления, когда в один из стримов приходит событие, в этом случае, для других берутся последние значения.

Делитесь в чате, используете ли вы RxDart на своих проектах и как он вам помогает? А мы поделимся еще несколькими полезными концептами во второй части!