Flutter Pulse
1K subscribers
605 photos
1 file
1.67K links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Flutter Debug Mode Blocked on iOS 26 Devices — Что нужно знать разработчикам

Если вы недавно обновили свой iPhone или iPad до iOS 26, вы, возможно, столкнулись с раздражающей ошибкой при запуске приложения Flutter: mprotect failed: 13 (Permission denied). Внезапно перестают работать горячая перезагрузка и отладочные сборки.

Основная проблема заключается в том, что Apple в iOS 26 ввела более строгие правила защиты памяти, которые конфликтуют с работой Dart VM в режиме отладки. Flutter использует компиляцию Just-In-Time (JIT), которая требует изменения страниц памяти во время выполнения для выполнения нового кода. iOS 26 блокирует это поведение по соображениям безопасности.

Вот, что можно сделать прямо сейчас:
🔹 Используйте режим профиля для тестирования на устройствах: flutter run --profile
🔹 Продолжайте отладку в симуляторе iOS, где по-прежнему доступен режим отладки с горячей перезагрузкой и breakpoints
🔹 Обновите Flutter до версии 3.35 или более поздней: flutter upgrade

📌 Рекомендуемый рабочий процесс:
👉 Разрабатывайте и отлаживайте в симуляторе (доступна горячая перезагрузка)
👉 Тестируйте производительность и поведение на устройствах в режиме профиля
👉 Используйте режим релиза для QA, распространения и сборки App Store

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, чтобы подписчики оценили рубрику.

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #iOS #debugmode #appdevelopment #mobiledevelopment
Автоматизация доставки мобильных приложений Flutter в магазины приложений
📱💻

В современном мире разработки мобильных приложений, процесс доставки приложений в магазины приложений может быть довольно трудоемким и склонным к ошибкам. Однако, с помощью инструментов GitLab CI/CD, этот процесс можно автоматизировать, чтобы разработчики могли сосредоточиться на разработке, а не на рутинных задачах. 🔄

В статье, которую мы рассматриваем сегодня, автор делится своим опытом по настройке автоматической отправки приложений Flutter в магазины Significa, TestFlight и Google Play с использованием GitLab CI/CD. Автор предоставляет примеры и готовые конфигурации для каждого этапа процесса, что делает статью очень полезной для разработчиков, которые хотят автоматизировать процесс доставки своих приложений. 📈

Статья охватывает такие темы, как подготовка сервера дистрибуции Significa, добавление скриптов деплоя в репозиторий с шаблонами, деплой приложения в Significa, и деплой приложения в Google Play и TestFlight. Автор также описывает процесс автоматизации выгрузки артефакта на сервер Significa для внутренней дистрибуции и выдачи ссылки для установки. 📊

Читать здесь: ссылка


FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #flutterpulsehabr #mobiledevelopment #gitlabci #ci/cd #automatization #appdelivery
Полное руководство по 40+ необходимым пакетам Flutter 🚀

Вы когда-нибудь смотрели на свой файл `pubspec.yaml` и задумывались, что на самом деле делают все эти пакеты? Давайте разберемся! 🔍

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

Вот некоторые из тем, которые мы затронем:
👉 Интернационализация и локализация с помощью `intl и easy_localization`
⚙️ Основные утилиты, такие как `collection, path и convert`
📁 Хранение и сохранение данных с помощью `path_provider, flutter_secure_storage и isar_community`
🔥 Работа с Firebase, включая `firebase_core, firebase_messaging и flutter_local_notifications`
💰 Внутриигровые покупки с помощью `in_app_purchase`
📱 Интеграция с устройством и системой с помощью `package_info_plus, permission_handler и app_settings`

🇷🇺 Читать статью на русском

🇬🇧 Read the article in English

🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, чтобы подписчики оценили рубрику.

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #crossplatform #developertools
Изучение новых возможностей в Flutter 3.38
Flutter продолжает развиваться, и с выходом версии 3.38 команда Google сосредоточилась на производительности, опыте разработчика и стабильности. В этой статье мы погрузимся в новые функции, взвесим их преимущества и недостатки, а также раскроем продвинутые советы по использованию этих обновлений.

Основная часть статьи посвящена разбору ключевых нововведений в Flutter 3.38, среди которых:
Impeller — новый движок рендеринга, доступный теперь и на Android, который обеспечивает более плавную анимацию и прокрутку.
Улучшенная обработка текста и новые возможности для `TextField и TextFormField`, включая встроенную поддержку контекстного меню на десктопе и вебе.
Улучшенные инструменты для отладки, включая новую функцию "Diff Snapshot" в Memory Profiler, которая помогает отслеживать утечки памяти.
Обновления Material 3, направленные на повышение согласованности и исправление ошибок.

В статье также обсуждаются преимущества и недостатки обновления до Flutter 3.38, а также даются советы по использованию новых функций, таких как:
🔹 Тестирование Impeller на Android для оценки прироста производительности.
🔹 Использование новой функции "Diff Snapshot" для выявления утечек памяти.
🔹 Настройка виджета SearchAnchor для реализации поиска в приложении.

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, чтобы подписчики оценили рубрику.

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #technews
👍1
Понимание initState() и didChangeDependencies() в Flutter: когда и как использовать

При создании Flutter-приложений разработчики часто сталкиваются с двумя важными методами жизненного цикла: initState() и didChangeDependencies(). Хотя они оба запускаются при создании виджета, у них разные цели и поведение.

В этой статье мы подробно рассмотрим эти методы, их различия и примеры использования. Вы узнаете, когда использовать initState() для инициализации контроллеров и переменных, а когда применять didChangeDependencies() для доступа к данным из Providers и Blocs.

Основные отличия между initState() и didChangeDependencies():
🔹 initState() запускается только один раз при создании виджета, а didChangeDependencies() может запускаться повторно при изменении зависимостей.
🔹 initState() не рекомендуется использовать для операций, требующих context, тогда как didChangeDependencies() безопасен для таких операций.

⚙️ Когда использовать initState():
👉 Для инициализации контроллеров и переменных.
👉 Для выполнения API-запросов, не зависящих от контекста.
👉 Для запуска анимаций.

⚙️ Когда использовать didChangeDependencies():
Для доступа к данным из Providers и Blocs.
Для чтения MediaQuery, Theme и Localizations.
Для выполнения запросов, основанных на данных из контекста.

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, чтобы подписчики оценили рубрику.

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #softwaredevelopment
1
Жизненный цикл виджета Flutter: от создания до уничтожения

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

В этой статье мы разберем полный цикл жизни виджетов Flutter, различия между жизненными циклами `StatelessWidget` и `StatefulWidget`, а также рассмотрим распространенные методы жизненного цикла, такие как initState(), build() и dispose(). Вы узнаете, как правильно управлять состоянием и ресурсами, и какие лучшие практики использовать при работе с виджетами.

Жизненный цикл виджета включает в себя несколько этапов: создание, монтирование, обновление и уничтожение.
🔹 `StatelessWidget имеет только один метод жизненного цикла — build()`, который вызывается только один раз, если только родительский виджет не перестраивает его.
🔹 StatefulWidget имеет динамический жизненный цикл, поскольку его состояние может меняться со временем.
👉 Основные методы жизненного цикла `StatefulWidget: createState(), initState(), didChangeDependencies(), build(), didUpdateWidget(), deactivate() и dispose()`.
⚙️ Правильное использование этих методов позволяет избежать утечек памяти и эффективно управлять состоянием.

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, чтобы подписчики оценили рубрику.

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #softwaredevelopment
Сжатие медиафайлов в Flutter: как уменьшить размер фотографий с 5 МБ до 500 КБ без потери качества

Вы когда-нибудь сталкивались с проблемой, когда пользователи загружают огромные фотографии в ваше Flutter-приложение, занимая слишком много места на сервере и замедляя работу приложения?

В новой статье рассматривается решение этой проблемы с помощью плагина media_compressor, который позволяет сжимать изображения и видео до 80-90% без потери качества.

В статье описываются приёмы и советы по сжатию медиафайлов, такие как:
Использование нативных платформенных API для максимальной производительности
Сохранение качества изображений при уменьшении размера файла
Обработка ошибок и исключений
Поддержка сжатия видео

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

🔹 Сжатие изображений до 80-90% без потери качества
🔹 Поддержка сжатия видео
🔹 Нативная производительность на Android и iOS
🔹 Простое использование и настройка

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, понравилась ли вам рубрика!

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #mediacompression
Добавляем изображения в push-уведомления FCM на iOS с Flutter: пошаговое руководство

Вы когда-нибудь пытались добавить изображения в push-уведомления на iOS с Flutter, но сталкивались с неожиданными трудностями? В этой статье вы найдёте подробное руководство по реализации этой функциональности.

В статье рассматривается процесс добавления изображений в push-уведомления FCM на iOS с использованием Flutter. Автор делится своим опытом и описывает основные этапы настройки Notification Service Extension, который необходим для загрузки изображений в уведомления. Вы узнаете, как создать новый таргет в Xcode, настроить Bundle Identifier и добавить необходимый код в NotificationService.swift.

Основные темы, рассмотренные в статье:
👉 Как создать Notification Service Extension и настроить его для работы с push-уведомлениями
⚙️ Подробная инструкция по добавлению нового таргета в Xcode и настройке Bundle Identifier
📌 Как изменить код в NotificationService.swift для обработки изображений в push-уведомлениях
🔹 Решение возможных проблем, которые могут возникнуть при реализации

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Все подобные новости ищите по хэштегу #FlutterPulseMedium Напишите, чтобы подписчики оценили рубрику.

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #pushnotifications #iOS #FCM #Firebase #mobiledevelopment
Flutter Урок 5: Горячая перезагрузка, Отладка и DevTools

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

В статье мы узнаем, как использовать Горячую перезагрузку (Hot Reload), чтобы мгновенно видеть изменения, как отладить распространенные ошибки и как использовать мощные Flutter DevTools для инспекции дерева виджетов, производительности и использования памяти.
Горячая перезагрузка (Hot Reload) обновляет код мгновенно, сохраняя состояние приложения
Горячий рестарт (Hot Restart) перезапускает приложение, сохраняя последние изменения кода
Полный рестарт (Full Restart) перестраивает приложение с нуля

Мы также рассмотрим, как использовать DevTools для визуальной отладки, инспекции дерева виджетов и анализа производительности.
👉 Полезные советы для отладки:
🔹 Используйте print() для быстрого отслеживания изменений
🔹 Установите точки останова в VS Code/Android Studio
🔹 Используйте DevTools для отладки макета и анализа производительности

🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал

Оцените рубрику! Все подобные новости ищите по хэштегу #FlutterPulseMedium

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #FlutterPulseMedium #devtools #hotreload #debugging #mobiledevelopment #appdevelopment
👍1
Async/await и Isolate в Flutter: не путайте ожидание с работой 🚀
Когда ваше приложение тормозит, первая мысль: «нужно вынести это в отдельный поток». В Flutter эта мысль часто выливается в async/await или Isolate. Но это не взаимозаменяемые вещи, а инструменты для разных задач 🤔. И если перепутать, можно получить либо бесполезный код, либо вечно зависающий UI 😱.

Главное заблуждение: async/await сам по себе не переносит выполнение в другой поток. Он просто дает удобный способ работать с асинхронными операциями, которые уже неблокирующие по своей природе: запросы к сети, чтение с диска, ожидание таймера 🕒.

Для операций ввода-вывода async/await достаточно 📁. Сеть, базы данных, файловая система - все это уже асинхронно на уровне платформы. Достаточно дождаться результата, и UI останется отзывчивым 📊.

Но как только появляются вычисления, которые грузят процессор - парсинг большого JSON, обработка изображений, сложные математические расчеты, - async/await перестает помогать 🤯. Здесь нужен настоящий параллелизм. Isolate запускает код в отдельном потоке (или даже ядре) и не трогает основной 💻.

Самый простой способ - compute(). Он берет функцию и данные, запускает их в изоляте и возвращает результат 📈. Идеально для разовых тяжелых задач.

Если нужно постоянное взаимодействие с фоновым процессом, например, обработка потока данных или долгая работа с промежуточными результатами - придется использовать Raw Isolate 📝. Там уже ручное управление портами и сообщениями, но зато полный контроль.

Итак, что выбрать?
🔵 Ждете ответ от сети или диска? async/await.
🔵 Нужно один раз обработать большой кусок данных? compute().
🔵 Есть долгий фоновый процесс с обменом сообщениями? Raw Isolate.
🔵 Пытаетесь ускорить вычисления, просто добавив async? Бесполезно, почитайте заново 📚.

Вывод: Async/await и Isolate не конкуренты, а партнеры 🤝. Первый отвечает за ожидание, второй - за параллельное выполнение. Смешивать их нужно осознанно, а не по принципу «чтоб не тормозило» 🚫.

Полную новость читайте здесь.

FlutterPulse — канал о мире Flutter!

#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter #asyncawait #isolate #mobiledevelopment #programming