fa
Feedback
Юрий Петров | ai engineering

Юрий Петров | ai engineering

رفتن به کانال در Telegram

Привет! 👋 Я руководитель отдела разработки. Здесь мы изучаем LLM, автоматизацию с n8n, делаем крутые приложения на Flutter и учим их думать с помощью ИИ. Новости, лайфхаки, интересные кейсы, присоединяйся. #flutter #dart #llm #ai #ollama #n8n #agent #go

نمایش بیشتر
1 848
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-117 روز
-1330 روز
آرشیو پست ها
Уф, нашел время глянуть видео, как ребята проводят код ревью. В целом со многим соглашусь, ребята молодцы. Рекомендую посмотреть, особенно новичкам. https://www.youtube.com/live/HUKiTWOtbsE?si=zf4zzSp-gb1tt0LJ

Repost from Flutter Friendly
Привет, это Роза, Flutter Dev Friflex👋 Сегодня расскажу о пакете meta, который помогает сделать Dart-код более понятным, под
Привет, это Роза, Flutter Dev Friflex👋 Сегодня расскажу о пакете meta, который помогает сделать Dart-код более понятным, поддерживаемым и безопасным. Что такое пакет meta Пакет meta — это библиотека от команды Dart, которая предоставляет аннотации для добавления метаданных в ваш код. Эти аннотации: 🖱 Документируют код: помогают понять, как правильно использовать функции, классы или переменные 🖱 Подсвечивают ошибки: инструменты анализа, такие как dart analyze, используют аннотации для поиска проблем в коде 🖱 Улучшают читаемость: делают код понятнее для команды и проще в сопровождении Основные аннотации пакета meta 🔴@immutable — указывает, что класс неизменяемый и все его поля должны быть final 🔴@protected — говорит, что метод или поле предназначено только для использования внутри класса или его подклассов 🔴@visibleForTesting — Помечает метод или поле как доступное только для тестов. 🔴@sealed — отмечает, что класс нельзя наследовать за пределами этого файла 🔴@mustCallSuper — обязывает вызывать метод суперкласса при переопределении Расширенные аннотации пакета meta 🔴@experimental — помечает элемент как экспериментальный и подверженный изменениям 🔴@UseResult — указывает, что результат функции или метода должен быть использован 🔴@alwaysThrows — заставляет метод всегда выбрасывать исключение 🔴@doNotStore — значение не должно сохраняться или кэшироваться 🔴@internal — говорит, что элемент предназначен для внутреннего использования и не является частью публичного API Как использовать аннотации

import 'package:meta/meta.dart';

@immutable
class User {
  final String name;
  final int age;

  const User(this.name, this.age);
}
Достаточно добавить аннотацию перед объявлением класса, метода или поля, чтобы она начала работать. Если хотите узнать больше, загляните в документацию пакета. Используйте аннотации из meta, чтобы писать качественный и профессиональный код. А если есть вопросы или предложения, пишите в комментариях. Обсудим 🚀

Вышло обновление плагина Dart для VS Code. Что нового? - Удаление поддержки старых версий SDK. - Предпросмотр цвета в автодополнении кода. - И еще много разных исправлений и дополнений. Почитать можно здесь.

Всем привет, по просьбам подписчиков на выходных обновил ботика-наблюдателя @FlutterObserver_bot - добавил русский язык; - Fl
+3
Всем привет, по просьбам подписчиков на выходных обновил ботика-наблюдателя @FlutterObserver_bot - добавил русский язык; - Flutter — добавил отслеживания ветки beta; - Dart — добавил отслеживания ветки beta и dev; - cводка — добавил подробное описание текущих версий. Чтобы избежать ошибок, не забывайте перезапускать ботика командой /start.

Свершилось, вчера apple открыла движок для сборки который используется в XCode. А это значит, что теперь любой может создать свой XCode). Ждем плагин на VSCode 😊 https://github.com/swiftlang/swift-build

Repost from Friflex Dev
Мы искренне любим Flutter и готовы рекомендовать его всем, кто хочет начать карьеру в IT. Почему? Ответ — на карточках! А ты
+5
Мы искренне любим Flutter и готовы рекомендовать его всем, кто хочет начать карьеру в IT. Почему? Ответ — на карточках! А ты уже в игре? ❤️ — разрабатываю на Flutter 🔥 — пока еще выбираю 👍 — поклонник другого фреймворка

Записал видео на ютуб про отмену макросов и как это отразится на Dart в ближайшее время 😎 Если этот пост наберет 150 💩, скину на этот канал сжатый вариант видео, чтобы можно было его посмотреть в телеге 😇 p.s. Если не в курсе откуда такие требования, см. этот пост и пару следующих под ним 🫠

Current version of Flutter: 3.27.3 Release date: 2025-01-21 Dart SDK version: 3.6.1 Current version of Dart: 3.6.2 Release date: 2025-01-29

🎉 A new version has been released! ✅ Dart: 3.6.2 📜 Additional information: ✅ Release date: 2025-01-29 ✅ Hash: 42f3fc1c648bc66e56c822a95e6139bb116020c3 🔗 Links: ✅ URL commit: https://github.com/dart-lang/sdk/commit/42f3fc1c648bc66e56c822a95e6139bb116020c3 ✅ URL tags: https://github.com/dart-lang/sdk/releases/tag/3.6.2

An_update_on_Dart_macros_&_data_serialization_|_by_Vijay_Menon_|.pdf3.06 MB

Пацаны к успеху шли, не получилось, не пошло ) Макросы отменяются. https://medium.com/dartlang/an-update-on-dart-macros-data-serialization-06d3037d4f12

Repost from Flutter Friendly
Привет, это Катя, Flutter Dev Friflex. Сегодня расскажу, как пользоваться режимом выбора виджетов (Select Widget Mode) из Flutter Inspector. А еще обсудим кнопку сброса выбранного виджета, о которой, как показала практика, не все знают. Flutter Inspector — это инструмент, встроенный в Flutter DevTools, который позволяет разработчикам анализировать и отлаживать пользовательский интерфейс. С его помощью можно: 🔴видеть иерархию виджетов 🔴проверять размеры и отступы 🔴изменять свойства виджетов в реальном времени Что такое Select Widget Mode? Select Widget Mode (SWM) — это режим, который позволяет вам выбирать виджеты в вашем приложении, чтобы увидеть их свойства и структуру. Чтобы активировать этот режим: 1️⃣ Запустите ваше приложение 2️⃣ Откройте DevTools 3️⃣ Выберите вкладку Flutter Inspector 4️⃣ Нажмите на кнопку «Select Widget Mode» (в левом верхнем углу) Как использовать SWM? Достаточно нажать на любой виджет в приложении, чтобы увидеть его свойства, которые можно изменить. Это ускоряет процесс разработки и тестирования в реальном времени.  Пример исправления отступов: Объявляю контейнер с паддингом 20 со всех сторон:
Container(
 Text:  padding: EdgeInsets.all(20.0),
  child: Text('Привет, Flutter Friendly!'),
) 
Мне нужно убрать вертикальный паддинг и посмотреть, как это будет выглядеть. Для этого использую SWM, выбираю контейнер и изменяю отступ в реальном времени на:
EdgeInsets.symmetric(horizontal: 20.0)
Важно: многие не знают о кнопке сброса, которая находится в левом нижнем углу приложения. Она появляется после первого нажатия на любой виджет в SWM. С ее помощью не нужно каждый раз перезапускать приложение, чтобы выбрать другой элемент на экране. Документацию по DevTools можно посмотреть здесь

Repost from Flutter Friendly
К нам едет ревизор, или как пройти проверку на защиту критических данных в приложении на Flutter Анна, Flutter Team Lead Friflex, в этой статье разобрала 7 основных вещей, которые больше всего волнуют аудиторов. 🔸Можно ли запустить приложение в небезопасной среде — на root/jailbreak устройствах и на эмуляторах? 🔸Какие библиотеки внедряются в проект? 🔸В каком виде и где хранятся критические данные? 🔸Какие разрешения запрашивает приложение? 🔸Доступно ли превью страницы с чувствительными данными в фоновом режиме? 🔸Доступен ли запуск приложения, установленного из недоверенного источника? 🔸Актуальна ли версия Flutter? Теперь вы на шаг ближе к прохождению аудита.

Ну что, ребята, готовы?) 21 февраля в Москве пройдет Профессиональная Flutter-конференция! FlutterConf — это уникальная возможность для Flutter-разработчиков углубить свои знания и обменяться опытом в области мобильной разработки. Что в программе? - Два потока докладов про реальные кейсы с нестандартными требованиями; архитектурные решения и инструменты для Flutter-проектов; - Нетворкинг-события – полезные знакомства; - Круглый стол: прошлое, настоящее и будущее Flutter; - Афтепати – отдохнуть от продуктивного дня и неформально пообщаться с коллегами. Я вместе с Аней будем выступать с докладом «Router во Flutter. Когда думал, что всё легко», где расскажем про концепцию декларативного роутера. Регистрация участников и подача докладов открыты на сайте. Специальный промокод на скидку 10%: СПИКЕР10 Присоединяйся — будут все свои!

Всем привет, на выходных допиливал бота), сделал: 1. Отображение последней релизной версии Flutter и Dart (просьба подписчика
+2
Всем привет, на выходных допиливал бота), сделал: 1. Отображение последней релизной версии Flutter и Dart (просьба подписчика). 2. Переработал работу пула изолятов для равномерной нагрузки. 3. Переработал алгоритм обновления и получения данных. 4. Добавлена команда /about — информация о боте. 5. Более информативное сообщение о выходе новых релизов Flutter/Dart. Если есть функционал, который бы вы хотели видеть в боте, пишите)

Repost from Flutter Friendly
Привет, это Роза, Flutter Dev Friflex. Сегодня расскажу, как использовать ARB-файл для локализации на максимум. Что это такое и как работает, писала в этом посте. Если вы занимаетесь локализацией приложений, то наверняка сталкивались с ситуациями, что в текстах встречаются динамические значения. Например, имя пользователя, дату или сумма денег. Чтобы не писать все это жестко в коде, в ARB-файле есть плейсхолдеры. Что это такое Плейсхолдеры — это метки, которые заменяются на реальные значения в runtime. Что они содержат 🔴 description — описание, которое помогает разработчикам понять контекст строки и ее назначение 🔴 example — пример использования строки 🔴 type — тип данных: String, Object, int, double, num, DateTime Некоторые типы позволяют настроить поведение еще точнее: 🔴Для чисел (num, int, double): параметры форматирования, такие как валюта, количество знаков после запятой 🔴Для дат (DateTime): поддержка форматов и кастомных шаблонов для отображения дат Например:

"pageHomeBalance" : "Your balance is {amount} on {date}",
"@pageHomeBalance" : {
    "placeholders": {
        "amount": {
            "type": "double",
            "format": "currency",
            "example": "$1000.00",
            "description": "Account balance",
            "optionalParameters": {
                "decimalDigits": 2,
                "name": "USD",
                "symbol": "$",
                "customPattern": "¤#0.00"
            }
        },
        "date": {
            "type": "DateTime",
            "format": "yMd",
            "example": "11/10/2021",
            "description": "Balance date"
        }
    }
}
Здесь {amount} и {date} — плейсхолдеры, которые заменяются на реальные значения при отображении. Основные параметры плейсхолдеров — в таблице. Виды плейсхолдеров Виды плейсхолдеров: 1. Standard Placeholder (`{}`): для подстановок динамических значений. 2. Plural: изменяет текст в зависимости от количества объектов. 3. Select: выбирает строку в зависимости от кастомного параметра. Например, от времени суток. 4. Gender: изменяет текст в зависимости от пола 💬 Примечания Указывайте other на случай неожиданных значений. Plural, Select, Gender используют синтаксис ICU. Если у вас есть свои лайфхаки или рекомендации по работе с ARB — делитесь ими в комментариях!

Repost from Flutter Friendly
Привет! На связи Анна, Friflex Flutter Team Lead Совсем недавно всеми известная библиотека bloc обновилась до версии 9.0.0. В
Привет! На связи Анна, Friflex Flutter Team Lead Совсем недавно всеми известная библиотека bloc обновилась до версии 9.0.0. Вместе с ней критические изменения в мажорном обновлении получили: 🔴flutter_bloc (v9.0.0) 🔴hydrated_bloc (v10.0.0) 🔴bloc_test (v10.0.0) Что эти обновления нам принесли и стоит ли обновляться в ближайшее время? Разберем по пунктам! 1️⃣ Минимальная версия Dart SDK поднята до 2.14. 2️⃣ Удален класс BlocOverrides. Этот объект был внедрен в библиотеку bloc в версии 8.0.0 и успешно работал на чистых Dart программах, но в приложениях на Flutter он вызывал много критичных ошибок. Из-за этого создатели уже в версии bloc 8.1.0 пометили его как Deprecated и рекомендовали к замене на Bloc.observer и Bloc.transformer. Сейчас в версии 9.0.0 класс был удален полностью — самое время обновиться и избавиться от проблемного API 🙂 3️⃣ Представлен EmittableStateStreamableSoure. Новый интерфейс позволяет библиотеке bloc_test отвязаться от прямого использования реализаций BlocBase. Как результат — метод тестирования блоков blocTest больше не зависит от BlocBase. 4️⃣ Добавлена поддержка WASM. Отличная новость для тех, кто использует библиотеку hydrated_bloc и кому необходимо компилировать Flutter-приложения в WASM — обновление до версии 10.0.0 позволит это сделать! 5️⃣ Изменено поведение HydratedStorage.build(). В предыдущей версии библиотеки повторный вызов метода HydratedStorage.build() возвращал кэшированный экземпляр хранилища. Теперь проблема решена — каждый новый вызов будет создавать новый объект. Принимать решение о том, поднимать ли версии в своих проектах или нет, конечно, стоит индивидуально, учитывать специфику приложения и остальных зависимостей. Но эти изменения однозначно стоят внимания! Подробнее ознакомиться с документацией по миграции можно здесь.

Наткнулся на репозиторий, где собраны бесплатные приложения, никакого пиратства. ) Может кому пригодится. 😅 Забираем здесь.
Наткнулся на репозиторий, где собраны бесплатные приложения, никакого пиратства. ) Может кому пригодится. 😅 Забираем здесь.

Repost from Flutter Friendly
Привет, это Катя, Flutter Dev Friflex. Недавнее обновление Android Studio вызвало проблему на целый день. Сегодня расскажу, как сделать так, чтобы ваше рабочее окружение снова заработало без ошибок. Проблема После обновления с AS 2023.2.1 на AS 2024.2.1 начала появляться ошибка:

ERROR: JAVA_HOME is set to an invalid directory
Причина Эта ошибка возникает из-за того, что при установке новой версии Android Studio автоматически обновляется версия Java, что может нарушить совместимость. Шаги решения 1. Установка OpenJDK 17 через brew. Установите нужную версию Java с помощью команды brew install openjdk@17. Подробнее о пакете можно узнать на странице установки OpenJDK через brew. 2. Переопределение JAVA_HOME в ~/.zshrc. Обратите внимание, что этот подход может не сработать, так как параметр JAVA_HOME устанавливается, но не применяется в системе. Добавьте следующую строку в ваш ~/.:

export JAVA_HOME=/opt/homebrew/opt/openjdk@17
3. Проверка текущих настроек Flutter. Выполните команду:

flutter config --list
Обратите внимание на параметр jdk-dir. Он указывает текущий путь до Java Development Kit (JDK). 4. Обновление пути до JDK. Замените текущий путь на установленную версию OpenJDK. Например:

flutter config --jdk-dir /opt/homebrew/opt/openjdk@17
Если вы уже устанавливали JDK другим способом, укажите соответствующий путь. 5. Проверка конфигурации Flutter. Убедитесь, что изменения применились, выполнив:

flutter config --list
Затем попробуйте запустить проект, чтобы проверить работоспособность. Теперь проект должен успешно запускаться 🥳 Если вы сталкивались с подобной проблемой и решили ее иным способом, поделитесь своим опытом в комментариях!

🎉 A new version has been released Flutter: 3.27.3 https://github.com/flutter/flutter/tags