Flutter Friendly
755 subscribers
119 photos
53 videos
1 file
108 links
Канал Friflex о разработке на Flutter. Обновления, плагины, полезные материалы — превращаем знания в реальный опыт, доступный каждому разработчику.

🔗 Наш канал для разработчиков: @friflex_dev
🔗 Канал о продуктовой разработке: @friflex_product
Download Telegram
Юра, Tech Lead Flutter-команды Friflex, поделился новой подробной инструкцией, как установить все необходимое для написания приложения для Aurora на Flutter

Смотреть:
📎на YouTube
📎в VK
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥4👌3
🎁 Вишлисты в студию!

Чтобы близкие знали, что подарить вам, собрали несколько вариантов вишлистов: тут и для души, и для работы. Осталось только поделиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥8👌3
С наступающим Новым годом, Flutter-герои!

Пусть 2025 принесет вам стабильные билды, меньше багов и больше вдохновения.

А мы подготовили для вас Flutter-елочку. Есть предложения, как еще ее можно нарядить?🎄
4🎄3
Привет, Flutter-разработчики! Есть вопрос. Какие функции обязательно должны быть перед выпуском приложения в продакшн? Можно выбрать несколько вариантов или написать свой в комментариях.
Anonymous Poll
10%
Запрос рейтинга
58%
Аналитика (Appmetrica, GA и другие)
34%
Пуши
37%
Форма обратной связи
24%
Поддержка кэширования
13%
Поддержка SSL-pinning
73%
Трекеры ошибок (например, Crashlytics)
6%
Рекламные блоки
31%
Удаленная конфигурация
5
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз приложения + чек-лист для запуска = 🏆

Собрали фичи, которые лучше добавить в приложение перед первым же релизом.

✔️Сбор реакций «нравится — не нравится»
Настроить автоматический запрос можно в виде модального окна с просьбой оценить приложение. Например, изобразить два смайла — веселый и грустный.

✔️Hard/soft update
Чтобы избежать проблем с недоступными или поломанными функциями, лучше использовать Feature Toggle, то есть переключатели.

✔️Аналитика (Appmetrica, GA и другие)
Поможет оценить эффективность приложения и выявить направления для продвижения. Будут полезны такие данные, как количество ежедневной аудитории (DAU), частота использования функций приложения и метрики возврата аудитории.

✔️Push уведомления (Firebase, OneSignal и другие)
Правильно настроенная отправка уведомлений вернет в приложение пользователей, которые давно не заходили.

✔️Форма обратной связи
Это позволит лучше понять путь пользователя в приложении. Настройте пассивный фидбэк, добавив отдельную кнопку «связаться с нами» в меню приложения.

✔️Поддержка кэширования
У этой фичи много плюсов, одна из которых — работа приложения без доступа интернету. Используйте такой вариант локального хранения данных, как хранение в оперативной памяти приложения или сохранение ответов сервера на диск в виде отдельных файлов.

✔️Поддержка SSL-pinning
Привязка сертификата или публичного ключа сервера к клиенту особенно актуальна для приложений, требующих высокого уровня защиты данных.

✔️Трекеры ошибок (FireBase Crashlytics, Appmetrica и другие)
Интеграция с FireBase Crashlytics происходит шаблонно, особенно на Flutter, и не требует дополнительных действий.

✔️Рекламные блоки
Это один из наиболее эффективных инструментов монетизации мобильного приложения. Разместить рекламные блоки можно при запуске или более нативно в контенте приложения.

✔️Удаленная конфигурация приложения
Файл различных конфигураций приложения лежит удаленно на сервере или сервисе. Это позволяет проводить различные эксперименты в приложении, не перевыкладывая его.

Все из списка есть? Ваше приложение готово покорить заказчика и стать любимчиком пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63💯2🤝1
А вдруг вы прямо сейчас пишете сервис на Dart, задача которого — отправить миллион сообщений ровно в 12 дня? Юрий Петров, Tech Lead Friflex, написал статью, как это можно сделать:

🔸Установить и запустить контейнер с RabbitMQ
🔸Настроить RabbitMQ
🔸Создать Producer (отправителя) на Flutter
🔸Создать Consumer (потребителя) на Flutter

Сохраняйте, чтобы не потерять🔖
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍9🔥6
«Он сказал мне, что жизнь, как в мечте, получу я без всяких преград»🐼

Но только если ваше приложение пройдет аудит. Виды, этапы и как подготовиться — на карточках.

📎Полезные ссылки:
Статья на Хабре
OWASP
Пример чек-листа на Стингрей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥95👍5
This media is not supported in your browser
VIEW IN TELEGRAM
🕊️Знакомьтесь, Flutter Observe @FlutterObserver_bot

Наш Tech Lead Юрий Петров создал Telegram-бота, который отслеживает репозитории Flutter и Dart и оперативно уведомляет о новых релизах и изменениях в ветке STABLE.

➡️Технические детали:
Бот написан на Dart, база данных: SQLite + Drift.

➡️Что дальше?
В планах — добавить дашборды активности репозиториев и возможность отслеживания пакетов на Pub.dev.

@FlutterObserver_bot, запомнили?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥53
This media is not supported in your browser
VIEW IN TELEGRAM
ARB-формат во всей красе

Привет, это Роза, Flutter Dev Friflex. В последнее время я много работаю с локализацией и заметила интересную вещь: ARB-файл часто недооценен. Сейчас расскажу, что это и как работает.

Что это
ARB (Application Resource Bundle) — это, по сути, файл JSON, улучшенный для локализации, с расширением .arb. Проще говоря, там хранятся переводы текста, которые вы видите в приложении. Помимо ключей и строк, ARB поддерживает:
🔴описания контекста
🔴примеры использования
🔴типы данных
🔴форматирование

Например:
{
"@@locale": "ru",
"topicTitle": "Arb-формат во всей красе",
"@topicTitle": {
"description": "Заголовок для статьи про Arb-формат"
}
}


Здесь ключ topicTitle хранит строку, а под @topicTitle — метаданные. При помощи метадаты вы можете указывать для ключей локализации:
🔸context: пояснения для переводчиков и разработчиков
🔸type: указание типа строки или ее назначения
🔸comment: подсказки к строкам

Например:
{
"welcome": "Добро пожаловать, {name}!",
"@welcome": {
"description": "Сообщение для приветствия",
"context": "Для нового пользователя",
"type": "Information",
"comment": "Имя {name} нельзя переводить."
}
}


Где используется
Во Flutter ARB-файлы тесно интегрированы с библиотекой intl, которая отвечает за локализацию.

Как это работает
1️⃣ Создаете отдельные ARB-файлы для всех языков, которые хотите поддерживать.
2️⃣ С помощью команды flutter gen-l10n генерируете Dart-код, который автоматически подтягивает правильные переводы для языка пользователя.
3️⃣ В коде просто обращаетесь к строкам по их ключам, а перевод подставляется автоматически.

❗️В реальных приложениях часто требуется использовать динамические значения внутри строк.

Например, вместо «Привет, Роза!» в строке может быть «Привет, {name}!»

Для этого в ARB-файлах применяются плейсхолдеры. О них я расскажу в следующем посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍76
This media is not supported in your browser
VIEW IN TELEGRAM
Привет, это Катя, 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

Затем попробуйте запустить проект, чтобы проверить работоспособность.

Теперь проект должен успешно запускаться 🥳

Если вы сталкивались с подобной проблемой и решили ее иным способом, поделитесь своим опытом в комментариях!
👍166🔥5👌1