Разработка проектов на Flutter с возможностью легкого портирования на другие платформы
🌟 В статье Юра Петров, руководитель отдела разработки компании Friflex, делится своим опытом и рекомендациями по созданию проектов на Flutter, которые можно легко адаптировать для различных платформ, включая Android, iOS, Linux, MacOS, Web, Windows и другие.
Для достижения этой цели автор предлагает выполнить несколько шагов:
1. Анализ подключаемых пакетов: перед началом проекта необходимо проанализировать используемые пакеты и плагины, чтобы убедиться, что они поддерживают все необходимые платформы 📦.
2. Создание папки app_service: создать глобальную папку
3. Создание реализаций для Base: создать базовые реализации плагинов, которые будут использоваться на всех платформах 💻.
Автор также подчеркивает важность создания интерфейсов для плагинов, чтобы можно было легко заменить одну реализацию на другую, не меняя основной код проекта 🔄. В качестве примера автор использует плагин flutter_secure_storage и показывает, как создать интерфейс и реализацию для него 🔒.
В целом, статья предоставляет полезные рекомендации и советы по созданию проектов на Flutter, которые можно легко портировать на другие платформы, и подчеркивает важность тщательного планирования и анализа на этапе начала проекта 📊.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #mobiledevelopment #crossplatformdevelopment
🌟 В статье Юра Петров, руководитель отдела разработки компании Friflex, делится своим опытом и рекомендациями по созданию проектов на Flutter, которые можно легко адаптировать для различных платформ, включая Android, iOS, Linux, MacOS, Web, Windows и другие.
Для достижения этой цели автор предлагает выполнить несколько шагов:
1. Анализ подключаемых пакетов: перед началом проекта необходимо проанализировать используемые пакеты и плагины, чтобы убедиться, что они поддерживают все необходимые платформы 📦.
2. Создание папки app_service: создать глобальную папку
app_service в корне проекта, в которой будут храниться интерфейсы и реализации плагинов 📁.3. Создание реализаций для Base: создать базовые реализации плагинов, которые будут использоваться на всех платформах 💻.
Автор также подчеркивает важность создания интерфейсов для плагинов, чтобы можно было легко заменить одну реализацию на другую, не меняя основной код проекта 🔄. В качестве примера автор использует плагин flutter_secure_storage и показывает, как создать интерфейс и реализацию для него 🔒.
В целом, статья предоставляет полезные рекомендации и советы по созданию проектов на Flutter, которые можно легко портировать на другие платформы, и подчеркивает важность тщательного планирования и анализа на этапе начала проекта 📊.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #mobiledevelopment #crossplatformdevelopment
👍2
Создание платформы с использованием WebView и Flutter
В последнее время разработка мобильных приложений стала еще более сложной и требовательной 📈. Одним из способов упростить этот процесс является использование WebView как контентного слота, обернутого в полноценный нативный UI на Flutter 📊. В этой статье мы рассмотрим подход к созданию такой платформы и ее архитектуре, а также различные аспекты разработки мобильных приложений с использованием Flutter и Server-Driven UI 📈.
Одним из ключевых аспектов создания платформы является ее архитектура 📁. Автор статьи выбрал Flutter в качестве основы для своей платформы из-за его производительности, мультиплатформенности и контроля над пикселями 📊. Архитектура платформы состоит из трех слоев: нативной оболочки (Flutter), моста (JS Bridge) и WebView 🌉. Нативная оболочка обеспечивает мгновенную навигацию и нативные элементы управления, мост позволяет сайту и приложению общаться, а WebView отображает сайт 📄.
Реализация Server-Driven UI (SDUI) является еще одним важным аспектом разработки мобильных приложений 📈. Эта технология позволяет изменять внешний вид и функциональность приложения без необходимости пересборки и повторного выпуска в магазины приложений 📊. Это достигается за счет загрузки конфигурационных данных с сервера при запуске приложения 📁. Кроме того, статья затрагивает тему монетизации и вовлечения пользователей с помощью инструментов Firebase и AdMob, включая push-уведомления и поддержку тем и сегментации аудитории 📈.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #mobiledevelopment #webview
В последнее время разработка мобильных приложений стала еще более сложной и требовательной 📈. Одним из способов упростить этот процесс является использование WebView как контентного слота, обернутого в полноценный нативный UI на Flutter 📊. В этой статье мы рассмотрим подход к созданию такой платформы и ее архитектуре, а также различные аспекты разработки мобильных приложений с использованием Flutter и Server-Driven UI 📈.
Одним из ключевых аспектов создания платформы является ее архитектура 📁. Автор статьи выбрал Flutter в качестве основы для своей платформы из-за его производительности, мультиплатформенности и контроля над пикселями 📊. Архитектура платформы состоит из трех слоев: нативной оболочки (Flutter), моста (JS Bridge) и WebView 🌉. Нативная оболочка обеспечивает мгновенную навигацию и нативные элементы управления, мост позволяет сайту и приложению общаться, а WebView отображает сайт 📄.
Реализация Server-Driven UI (SDUI) является еще одним важным аспектом разработки мобильных приложений 📈. Эта технология позволяет изменять внешний вид и функциональность приложения без необходимости пересборки и повторного выпуска в магазины приложений 📊. Это достигается за счет загрузки конфигурационных данных с сервера при запуске приложения 📁. Кроме того, статья затрагивает тему монетизации и вовлечения пользователей с помощью инструментов Firebase и AdMob, включая push-уведомления и поддержку тем и сегментации аудитории 📈.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #mobiledevelopment #webview
Решение проблем с памятью в Flutter на macOS
При создании приложения Quickgif для macOS с помощью Flutter, автор столкнулся с серьезной проблемой - резким увеличением потребления памяти при прокрутке списка GIF-картинок 📈. Это было вызвано тем, что изображения не выгружались из памяти после того, как они были пролистаны. Автор попытался решить эту проблему, используя режим профилирования Flutter и ограничив кэширование изображений, но проблема осталась 🤔.
Автор также использовал виджет CachedNetworkImage, но он не помог решить проблему полностью. Тогда он обратился к виджету ExtendedImage.network, который поддерживает кэширование и освобождение памяти. Это помогло уменьшить потребление памяти, но оно всё равно было слишком высоким 📊. Автор также обнаружил, что стандартные виджеты ListView и Image в Flutter могут вызывать проблемы с памятью.
Для решения проблемы автор решил использовать принудительное завершение движка Flutter и его плагинов, когда приложение находится в фоне. Он изучил, как работает запуск приложений Flutter на macOS, и обнаружил, что можно создать новый NSWindow и добавить FlutterViewController только после того, как пользователь нажмёт на иконку в строке меню. Автор также использовал пример проекта на GitHub, который показывает, как создать приложение для строки меню с Flutter.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #macOS #проблемыспамятью
При создании приложения Quickgif для macOS с помощью Flutter, автор столкнулся с серьезной проблемой - резким увеличением потребления памяти при прокрутке списка GIF-картинок 📈. Это было вызвано тем, что изображения не выгружались из памяти после того, как они были пролистаны. Автор попытался решить эту проблему, используя режим профилирования Flutter и ограничив кэширование изображений, но проблема осталась 🤔.
Автор также использовал виджет CachedNetworkImage, но он не помог решить проблему полностью. Тогда он обратился к виджету ExtendedImage.network, который поддерживает кэширование и освобождение памяти. Это помогло уменьшить потребление памяти, но оно всё равно было слишком высоким 📊. Автор также обнаружил, что стандартные виджеты ListView и Image в Flutter могут вызывать проблемы с памятью.
Для решения проблемы автор решил использовать принудительное завершение движка Flutter и его плагинов, когда приложение находится в фоне. Он изучил, как работает запуск приложений Flutter на macOS, и обнаружил, что можно создать новый NSWindow и добавить FlutterViewController только после того, как пользователь нажмёт на иконку в строке меню. Автор также использовал пример проекта на GitHub, который показывает, как создать приложение для строки меню с Flutter.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #macOS #проблемыспамятью