Возникла проблема с путями когда следовал стандартной документации установки Flutter на MacOS (ССЫЛКА).
Простое решение при написании путей к библиотеке Flutter в терминале пишем след:
sudo nano /etc/paths
далее в окне прописываем путь к нашему Flutter в моем случае это так:
/Users/uzhan/development/flutter/bin
Далее сохраняем перезапускаем
@fullter_dev #решение #macos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
Dart packages
shadcn_ui | Flutter package
shadcn/ui ported in Flutter. Awesome UI components for Flutter, fully customizable.
Хеллоу👋
🤔Недавно задумался над оптимизацией проекта и наткнулся на подкапотные механизмы Dart/Flutter и так если быть коротко то приходилось менять значения объектов очень много раз и работать с большими объемами данных и естественно созрел вопрос как это будет сказываться на производительности. Если быть точнее то придерживаться Иммутабельности объектов. Вот что удалось раскопать:
1. 👣 Создание новых объектов не такое затратное:
В Dart создание новых объектов (например, списков или состояния) — это довольно дешёвая операция. Dart использует оптимизированную систему управления памятью с "мусорщиком" (garbage collector), который эффективно управляет удалением неиспользуемых объектов. Поскольку объекты создаются быстро и удаляются из памяти, это не сильно нагружает систему в реальных сценариях работы с пользовательскими интерфейсами.
2. 👣 Flutter использует поверхностное сравнение (shallow comparison):
Если Bloc использует метод Equatable для сравнения состояний, который сравнивает только ссылки на объекты, а не сами объекты (это называется "поверхностное сравнение"). То есть, даже если ты создаешь новый список, Flutter не будет пересоздавать элементы списка, если их содержание не изменилось, а будет использовать существующие ссылки на объекты.
⚠️Однако...
Проблемы с производительностью могут возникнуть, если:
⏺️Операции слишком часты и объекты слишком большие. Например, если ты добавляешь или удаляешь большое количество элементов за короткое время.
⏺️Глубокие структуры данных: Если структура данных сложна (например, вложенные объекты), каждый раз пересоздавать большое количество вложенных объектов может быть дорогим.
@fullter_dev
🤔Недавно задумался над оптимизацией проекта и наткнулся на подкапотные механизмы Dart/Flutter и так если быть коротко то приходилось менять значения объектов очень много раз и работать с большими объемами данных и естественно созрел вопрос как это будет сказываться на производительности. Если быть точнее то придерживаться Иммутабельности объектов. Вот что удалось раскопать:
1. 👣 Создание новых объектов не такое затратное:
В Dart создание новых объектов (например, списков или состояния) — это довольно дешёвая операция. Dart использует оптимизированную систему управления памятью с "мусорщиком" (garbage collector), который эффективно управляет удалением неиспользуемых объектов. Поскольку объекты создаются быстро и удаляются из памяти, это не сильно нагружает систему в реальных сценариях работы с пользовательскими интерфейсами.
2. 👣 Flutter использует поверхностное сравнение (shallow comparison):
Если Bloc использует метод Equatable для сравнения состояний, который сравнивает только ссылки на объекты, а не сами объекты (это называется "поверхностное сравнение"). То есть, даже если ты создаешь новый список, Flutter не будет пересоздавать элементы списка, если их содержание не изменилось, а будет использовать существующие ссылки на объекты.
⚠️Однако...
Проблемы с производительностью могут возникнуть, если:
⏺️Операции слишком часты и объекты слишком большие. Например, если ты добавляешь или удаляешь большое количество элементов за короткое время.
⏺️Глубокие структуры данных: Если структура данных сложна (например, вложенные объекты), каждый раз пересоздавать большое количество вложенных объектов может быть дорогим.
@fullter_dev
Forwarded from Flutter Pulse
🚀 Dart 3.7 уже здесь! 🚀
🔥 Что нового? 🔥
💡 Records & Patterns стали мощнее – теперь можно использовать unnamed record fields и объединять несколько переменных сразу. Это делает код лаконичнее и читабельнее.
⚡ Обновления в dartaotruntime – теперь поддерживается AOT-компиляция, что ускоряет запуск и делает работу с Dart еще удобнее.
🐞 Исправления:
✅ HttpServer теперь корректно кодирует заголовки Content-Type.
✅ dart format правильно обрабатывает цифровые разделители.
✅ dart fix исправляет баги в многофайловых проектах.
🛠 Советы по миграции:
🔹 Обновите SDK в pubspec.yaml:
🔹 Запустите dart pub get перед форматированием кода.
🔹 Используйте dart fix вместо dart format --fix для лучшей совместимости.
📢 Полный changelog: Dart 3.7 Changelog
📢 Breaking changes: Изменения в 3.7.0
📢 Подробная статья на Хабре: Dart 3.7 – что нового?
⚡ Dart 3.7 делает язык выразительнее, а инструменты — умнее. Пора обновляться! 💙
#dart #flutter #flutterpulse #update 🚀
🔥 Что нового? 🔥
💡 Records & Patterns стали мощнее – теперь можно использовать unnamed record fields и объединять несколько переменных сразу. Это делает код лаконичнее и читабельнее.
⚡ Обновления в dartaotruntime – теперь поддерживается AOT-компиляция, что ускоряет запуск и делает работу с Dart еще удобнее.
🐞 Исправления:
✅ HttpServer теперь корректно кодирует заголовки Content-Type.
✅ dart format правильно обрабатывает цифровые разделители.
✅ dart fix исправляет баги в многофайловых проектах.
🛠 Советы по миграции:
🔹 Обновите SDK в pubspec.yaml:
sdk: '^3.7.0' 🔹 Запустите dart pub get перед форматированием кода.
🔹 Используйте dart fix вместо dart format --fix для лучшей совместимости.
📢 Полный changelog: Dart 3.7 Changelog
📢 Breaking changes: Изменения в 3.7.0
📢 Подробная статья на Хабре: Dart 3.7 – что нового?
⚡ Dart 3.7 делает язык выразительнее, а инструменты — умнее. Пора обновляться! 💙
#dart #flutter #flutterpulse #update 🚀
Forwarded from Мобильная разработка
This media is not supported in your browser
VIEW IN TELEGRAM
Учим алгоритмы без боли — интерактивный тренажер VisualGo поможет прокачаться в этой сложной теме. Он покажет алгоритмы В ДЕЙСТВИИ.
• Пояснения простые — поймет даже новичок.
• Есть все языки для мобильных разрабов, чтобы практиковаться и стать еще круче.
• Примеры только из реальных задач
• Бесплатно и без регистрации
Мастхев перед каждым собесом — тут.
• Пояснения простые — поймет даже новичок.
• Есть все языки для мобильных разрабов, чтобы практиковаться и стать еще круче.
• Примеры только из реальных задач
• Бесплатно и без регистрации
Мастхев перед каждым собесом — тут.
Ультимативный чек-лист по тестированию мобильных приложений — обозначил самые мощные «болевые точки», чтобы вы сверялись с гайдом при разработке и не сливали свои проги из-за мелких ошибок.
• Функциональное тестирование — проверка всех кнопок, форм, логина
• Совместимость — чтобы на Xiaomi 2019 все шло, как на новом айфоне.
• Локализация — даты, валюты, язык — все по правилам.
• Интеррапты — что будет, если кто-то позвонит во время заказа пиццы.
• Производительность — не разрядится ли телефон из-за вашей кнопки «Оформить».
• Пользовательский опыт — чтобы юзер не снес приложение через минуту.
Главное, все делать ДО РЕЛИЗА. Потому что баги — это не просто неудобно. Это — минус в рейтинге, отвалившиеся пользователи и потерянные деньги
• Функциональное тестирование — проверка всех кнопок, форм, логина
• Совместимость — чтобы на Xiaomi 2019 все шло, как на новом айфоне.
• Локализация — даты, валюты, язык — все по правилам.
• Интеррапты — что будет, если кто-то позвонит во время заказа пиццы.
• Производительность — не разрядится ли телефон из-за вашей кнопки «Оформить».
• Пользовательский опыт — чтобы юзер не снес приложение через минуту.
Главное, все делать ДО РЕЛИЗА. Потому что баги — это не просто неудобно. Это — минус в рейтинге, отвалившиеся пользователи и потерянные деньги
Forwarded from Flutter Pulse
Flutter: Архитектура Приложений и Лучшие Практики
🚀 Хотите создать масштабируемое и поддерживаемое приложение на Flutter? 🤔
В этой статье рассматривается архитектурный подход к созданию приложения Flutter с использованием Clean Architecture, принципов SOLID и Riverpod для управления состоянием. На примере функции Crypto Watch-list показано, как реализовать эти принципы на практике. Кроме того, рассматриваются ключевые нефункциональные требования (NFR) как лучшие практики для обеспечения надежности, масштабируемости и поддерживаемости приложения.
Статья охватывает такие темы, как:
✨ Разделение приложения на слои (Presentation, Domain, Data) в соответствии с Clean Architecture
✨ Использование Riverpod для управления состоянием и реализации принципов SOLID
✨ Реализация функций, таких как кэширование данных, отмена запросов API и автоматический повтор при восстановлении сети
✨ Оптимизация обновлений списка для минимизации перестроений UI
Ознакомьтесь с полной статьей, чтобы узнать больше о создании надежных и масштабируемых приложений на Flutter:
🇷🇺 Статья на русском языке
🇬🇧 Статья на английском языке
🌐 Оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам новая рубрика!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #apparchitecture #cleanarchitecture #riverpod #statemanagement #softwareengineering
🚀 Хотите создать масштабируемое и поддерживаемое приложение на Flutter? 🤔
В этой статье рассматривается архитектурный подход к созданию приложения Flutter с использованием Clean Architecture, принципов SOLID и Riverpod для управления состоянием. На примере функции Crypto Watch-list показано, как реализовать эти принципы на практике. Кроме того, рассматриваются ключевые нефункциональные требования (NFR) как лучшие практики для обеспечения надежности, масштабируемости и поддерживаемости приложения.
Статья охватывает такие темы, как:
✨ Разделение приложения на слои (Presentation, Domain, Data) в соответствии с Clean Architecture
✨ Использование Riverpod для управления состоянием и реализации принципов SOLID
✨ Реализация функций, таких как кэширование данных, отмена запросов API и автоматический повтор при восстановлении сети
✨ Оптимизация обновлений списка для минимизации перестроений UI
Ознакомьтесь с полной статьей, чтобы узнать больше о создании надежных и масштабируемых приложений на Flutter:
🇷🇺 Статья на русском языке
🇬🇧 Статья на английском языке
🌐 Оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам новая рубрика!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #apparchitecture #cleanarchitecture #riverpod #statemanagement #softwareengineering
Forwarded from Flutter Pulse
Обзор пакетов на тему Responsive UI
Easy Sidemenu 0.7.1
Easy Sidemenu - это легкий в использовании пакет для Flutter, который позволяет создавать боковые меню для навигации в вашем приложении. Он прост в интеграции и настройке, что делает его удобным для использования в различных проектах.
👍 Лайки: 7460, 📥 Скачиваний: 2.4M
📅 Обновлено: 5 месяцев назад
https://pub.dev/packages/easy_sidemenu
Sizer 3.1.3
Sizer - пакет, который автоматически адаптирует интерфейс вашего приложения к любому размеру экрана. Он упрощает процесс создания адаптивного дизайна в Flutter.
👍 Лайки: 1760, 📥 Скачиваний: 118K
📅 Обновлено: 3 месяца назад
https://pub.dev/packages/sizer
Simple Grid 0.1.5
Simple Grid - пакет, который предоставляет динамическую сетку, похожую на Bootstrap Grid, но с размерами, соответствующими точкам разрыва Material UI. Он прост в использовании и основан на media queries.
👍 Лайки: 79, 📥 Скачиваний: 357
📅 Обновлено: 11 месяцев назад
https://pub.dev/packages/simple_grid
Size Helper 2.1.0
Size Helper - пакет, который позволяет создавать адаптивный UI с большим контролем над компонентами, в зависимости от размера экрана. Он предоставляет простой и удобный способ задавать разные параметры UI для разных размеров экрана.
👍 Лайки: 58, 📥 Скачиваний: 397
📅 Обновлено: 13 месяцев назад
https://pub.dev/packages/size_helper
Overflow View 0.5.0
Overflow View - виджет для Flutter, который отображает дочерние элементы в строку с индикатором переполнения, если места не хватает. Он полезен для создания адаптивного интерфейса.
👍 Лайки: 219, 📥 Скачиваний: 20.3K
📅 Обновлено: 6 месяцев назад
https://pub.dev/packages/overflow_view
Flutter Admin Scaffold 1.4.0
Flutter Admin Scaffold - пакет для создания админских панелей в Flutter. Он позволяет легко реализовать боковую панель с меню, заголовком и футером.
👍 Лайки: 205, 📥 Скачиваний: 791
📅 Обновлено: 11 месяцев назад
https://pub.dev/packages/flutter_admin_scaffold
FlutterPulse — канал о мире Flutter!
#flutter #dart #pubdev #flutterpulse #EasySidemenu #Sizer #SimpleGrid #SizeHelper #OverflowView #FlutterAdminScaffold
Easy Sidemenu 0.7.1
Easy Sidemenu - это легкий в использовании пакет для Flutter, который позволяет создавать боковые меню для навигации в вашем приложении. Он прост в интеграции и настройке, что делает его удобным для использования в различных проектах.
👍 Лайки: 7460, 📥 Скачиваний: 2.4M
📅 Обновлено: 5 месяцев назад
https://pub.dev/packages/easy_sidemenu
Sizer 3.1.3
Sizer - пакет, который автоматически адаптирует интерфейс вашего приложения к любому размеру экрана. Он упрощает процесс создания адаптивного дизайна в Flutter.
👍 Лайки: 1760, 📥 Скачиваний: 118K
📅 Обновлено: 3 месяца назад
https://pub.dev/packages/sizer
Simple Grid 0.1.5
Simple Grid - пакет, который предоставляет динамическую сетку, похожую на Bootstrap Grid, но с размерами, соответствующими точкам разрыва Material UI. Он прост в использовании и основан на media queries.
👍 Лайки: 79, 📥 Скачиваний: 357
📅 Обновлено: 11 месяцев назад
https://pub.dev/packages/simple_grid
Size Helper 2.1.0
Size Helper - пакет, который позволяет создавать адаптивный UI с большим контролем над компонентами, в зависимости от размера экрана. Он предоставляет простой и удобный способ задавать разные параметры UI для разных размеров экрана.
👍 Лайки: 58, 📥 Скачиваний: 397
📅 Обновлено: 13 месяцев назад
https://pub.dev/packages/size_helper
Overflow View 0.5.0
Overflow View - виджет для Flutter, который отображает дочерние элементы в строку с индикатором переполнения, если места не хватает. Он полезен для создания адаптивного интерфейса.
👍 Лайки: 219, 📥 Скачиваний: 20.3K
📅 Обновлено: 6 месяцев назад
https://pub.dev/packages/overflow_view
Flutter Admin Scaffold 1.4.0
Flutter Admin Scaffold - пакет для создания админских панелей в Flutter. Он позволяет легко реализовать боковую панель с меню, заголовком и футером.
👍 Лайки: 205, 📥 Скачиваний: 791
📅 Обновлено: 11 месяцев назад
https://pub.dev/packages/flutter_admin_scaffold
FlutterPulse — канал о мире Flutter!
#flutter #dart #pubdev #flutterpulse #EasySidemenu #Sizer #SimpleGrid #SizeHelper #OverflowView #FlutterAdminScaffold
Заголовок: Я больше не хочу верстать чеки в коде. И вам не советую. 🛑
Коллеги, давайте честно: кто из вас любит верстать инвойсы или чеки на Flutter через стандартный пакет pdf?
Это всегда одно и то же: ты полчаса подбираешь SizedBox и Padding, чтобы логотип не съехал, потом пересобираешь проект, понимаешь, что промахнулся на пару пикселей, и начинаешь заново. А на утро заказчик просит поменять шрифт или передвинуть имя кассира. И ты снова лезешь в код.
Я работаю над крупным торговым проектом и в какой-то момент мне это просто надоело. Дизайн документа — это не задача программиста.
👣 Так родился pdf_kit_editor.
Это визуальный конструктор, который можно встроить прямо в ваше приложение. Дайте админу Drag-and-Drop редактор, пусть он сам настраивает шаблоны, а вы просто «вливайте» в них данные.
Что я туда заложил:
🧬 Умное связывание: Поддержка вложенных данных через точку (например, customer.address.city). Больше никаких ручных маппингов.
🖼 Авто-магия с картинками: Просто передайте путь к локальному файлу или URL — пакет сам подтянет и отрендерит изображения.
✨ Живой предпросмотр: PDF обновляется в реальном времени прямо в процессе редактирования. Видишь результат сразу.
📏 Любые форматы: От термоленты 58/80мм для чеков до А4 или вообще своего кастомного размера под специфические наклейки.
📊 Таблицы, которые не бесят: Автоматический цикл по списку товаров с гибкой настройкой колонок.
👁 Условная видимость: Элемент (например, «Скидка») скроется автоматически, если данных по нему нет.
🅰️ Google Fonts: Roboto, Montserrat и другие — кириллица и спецсимволы работают «из коробки».
💾 Гибкое сохранение: Пакет может сам сохранять шаблоны в SharedPreferences для прототипа или отдавать вам JSON для вашей БД.
Для меня это был вызов — сделать инструмент мощным, но при этом «легким». Внутри нет тяжелых стейт-менеджеров, так что пакет не раздует ваш проект.
Если вы тоже устали от pw.Column для каждого чека — залетайте, пробуйте. Буду очень рад звездам на GitHub и любому фидбеку! 🤝
🔗 Ссылка на пакет: [https://pub.dev/packages/pdf_kit_editor]
#flutter #dart #productivity #developer #opensource #pdf #b2b #coding
Коллеги, давайте честно: кто из вас любит верстать инвойсы или чеки на Flutter через стандартный пакет pdf?
Это всегда одно и то же: ты полчаса подбираешь SizedBox и Padding, чтобы логотип не съехал, потом пересобираешь проект, понимаешь, что промахнулся на пару пикселей, и начинаешь заново. А на утро заказчик просит поменять шрифт или передвинуть имя кассира. И ты снова лезешь в код.
Я работаю над крупным торговым проектом и в какой-то момент мне это просто надоело. Дизайн документа — это не задача программиста.
Это визуальный конструктор, который можно встроить прямо в ваше приложение. Дайте админу Drag-and-Drop редактор, пусть он сам настраивает шаблоны, а вы просто «вливайте» в них данные.
Что я туда заложил:
🧬 Умное связывание: Поддержка вложенных данных через точку (например, customer.address.city). Больше никаких ручных маппингов.
🖼 Авто-магия с картинками: Просто передайте путь к локальному файлу или URL — пакет сам подтянет и отрендерит изображения.
✨ Живой предпросмотр: PDF обновляется в реальном времени прямо в процессе редактирования. Видишь результат сразу.
📏 Любые форматы: От термоленты 58/80мм для чеков до А4 или вообще своего кастомного размера под специфические наклейки.
📊 Таблицы, которые не бесят: Автоматический цикл по списку товаров с гибкой настройкой колонок.
👁 Условная видимость: Элемент (например, «Скидка») скроется автоматически, если данных по нему нет.
🅰️ Google Fonts: Roboto, Montserrat и другие — кириллица и спецсимволы работают «из коробки».
💾 Гибкое сохранение: Пакет может сам сохранять шаблоны в SharedPreferences для прототипа или отдавать вам JSON для вашей БД.
Для меня это был вызов — сделать инструмент мощным, но при этом «легким». Внутри нет тяжелых стейт-менеджеров, так что пакет не раздует ваш проект.
Если вы тоже устали от pw.Column для каждого чека — залетайте, пробуйте. Буду очень рад звездам на GitHub и любому фидбеку! 🤝
#flutter #dart #productivity #developer #opensource #pdf #b2b #coding
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥2
Тот случай, когда реальность круче планов. ✨
Зашел в Flutter Pulse почитать новости, а наткнулся на пост про свой пакет pdf_kit_editor.
Неожиданно? Максимально.
Приятно? Не то слово.
Эффект неожиданности 10/10. Когда твои наработки замечают те, на ком держится комьюнити, понимаешь — бессонные ночи над кодом были не зря. Двигаемся выше! 💎
🔗 Ссылка на статью
Зашел в Flutter Pulse почитать новости, а наткнулся на пост про свой пакет pdf_kit_editor.
Неожиданно? Максимально.
Приятно? Не то слово.
Эффект неожиданности 10/10. Когда твои наработки замечают те, на ком держится комьюнити, понимаешь — бессонные ночи над кодом были не зря. Двигаемся выше! 💎
Please open Telegram to view this post
VIEW IN TELEGRAM
Developer's Notes
Photo
Ловим свежий апдейт конструктора PDF-шаблонов. Что завез в этот раз?👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Dart packages
pdf_kit_editor | Flutter package
A visual PDF template builder for Flutter to create receipts, documents, and reports using a drag-and-drop experience with Google Fonts and dynamic data support.
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Method 🆚 Class
При работе с Flutter и попытке оптимизировать код пользовательского интерфейса большинство из нас просто используют вспомогательные методы.
Реми Русселе создатель Riverpod и Provider, однажды сказал:
Константные классы гораздо более стабильны и компактны.
С вспомогательными методами каждый раз при перерисовке пользовательского интерфейса метод вызывается снова. Таким образом, это своего рода трата ресурсов процессора.
Но с const Flutter выделяет память один раз и просто повторно использует кэшированный экземпляр при следующих рендерингах.
При работе с Flutter и попытке оптимизировать код пользовательского интерфейса большинство из нас просто используют вспомогательные методы.
Реми Русселе создатель Riverpod и Provider, однажды сказал:
Классы имеют лучшее поведение по умолчанию. Единственное реальное преимущество методов — это написание немного меньшего количества кода, функционального преимущества нет
Константные классы гораздо более стабильны и компактны.
С вспомогательными методами каждый раз при перерисовке пользовательского интерфейса метод вызывается снова. Таким образом, это своего рода трата ресурсов процессора.
Но с const Flutter выделяет память один раз и просто повторно использует кэшированный экземпляр при следующих рендерингах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Управление состоянием во Flutter🧐
Выбор State Management — это всегда компромисс между скоростью разработки и чистотой архитектуры. Разберем основные инструменты из таблицы:
SetState: Идеально для маленьких приложений и быстрых прототипов. Главный плюс — простота, но на больших проектах его будет сложно поддерживать.
Provider: «Золотая середина» для проектов среднего размера.
BLoC / Cubit: Мощное решение для сложных корпоративных систем. Обеспечивает предсказуемость и легкость в тестировании, хотя и требует написания большего объема кода.
GetX: Идеален для тех, кому нужна максимальная скорость разработки. Его любят за отсутствие лишнего шаблонного кода (boilerplate) и реактивность, но важно сохранять дисциплину, чтобы проект не превратился в хаос.
Riverpod: Современный стандарт для масштабируемых приложений. Он безопасен с точки зрения типов и очень гибок.
MobX: Элегантный и реактивный подход. Хотя он реже встречается в новых проектах по сравнению с Riverpod, он все еще ценится за лаконичность кода.
Redux: Решение для очень крупных, жестко структурированных приложений. Дает предсказуемость благодаря централизованному хранилищу, но требует написания огромного количества кода.
ValueNotifier: Легковесный и эффективный инструмент для простых реактивных обновлений. Отличная альтернатива setState, когда нужно точечно обновить UI, не перестраивая всё дерево виджетов.
Выбор State Management — это всегда компромисс между скоростью разработки и чистотой архитектуры. Разберем основные инструменты из таблицы:
SetState: Идеально для маленьких приложений и быстрых прототипов. Главный плюс — простота, но на больших проектах его будет сложно поддерживать.
Provider: «Золотая середина» для проектов среднего размера.
BLoC / Cubit: Мощное решение для сложных корпоративных систем. Обеспечивает предсказуемость и легкость в тестировании, хотя и требует написания большего объема кода.
GetX: Идеален для тех, кому нужна максимальная скорость разработки. Его любят за отсутствие лишнего шаблонного кода (boilerplate) и реактивность, но важно сохранять дисциплину, чтобы проект не превратился в хаос.
Riverpod: Современный стандарт для масштабируемых приложений. Он безопасен с точки зрения типов и очень гибок.
MobX: Элегантный и реактивный подход. Хотя он реже встречается в новых проектах по сравнению с Riverpod, он все еще ценится за лаконичность кода.
Redux: Решение для очень крупных, жестко структурированных приложений. Дает предсказуемость благодаря централизованному хранилищу, но требует написания огромного количества кода.
ValueNotifier: Легковесный и эффективный инструмент для простых реактивных обновлений. Отличная альтернатива setState, когда нужно точечно обновить UI, не перестраивая всё дерево виджетов.
Forwarded from Типичный программист
Большая подборка статей, которая поможет изучить 30 основ проектирования систем
Осталось только лайк поставить и сохранить👍
#архитектура
1. APIs
2. Вебхуки
3. REST и GraphQL
4. API Gateway
5. Балансировщики нагрузки
6. Алгоритмы балансировки нагрузки
7. Прокси vs Обратный прокси
8. Масштабируемость
9. Доступность (Availability)
10. Единая точка отказа (SPOF)
11. Теорема CAP
12. Типы баз данных
13. SQL или NoSQL
14. Транзакции ACID
15. Индексирование баз данных
16. Шардирование или партиционирование БД
17. Согласованное хеширование (Consistent Hashing)
18. Захват изменения данных (Change Data Capture, CDC
19. Кэширование
20. Стратегии кэширования
21. Политики очищения кэша (Cache Eviction Policies)
22. CDN (Сети доставки контента)
23. Алгоритмы ограничения скорости запросов (Rate Limiting)
24. Очереди сообщений (Message Queues)
25. Фильтр Блума
26. Идемпотентность
27. Конкурентность и параллелизм
28. Состояние: stateful vs stateless
29. Long polling vs WebSockets
30. Пакетная обработка и потоковая обработка
Осталось только лайк поставить и сохранить
#архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор
Файл
🔹1) Импорт пакетов: Мы подключаем
🔹2) Функция
🔹3) MyApp Widget: Наш главный виджет (
🔹4) MaterialApp: Здесь задаются глобальные настройки: тема, шрифты, скрытие баннера отладки и определение домашней страницы.
🔹5) HomeScreen: Первый экран, который увидит пользователь.
🔹 6) Scaffold: Каркас страницы. Он предоставляет готовую структуру для AppBar, тела страницы (body) и других элементов (кнопок, меню).
Ключевой вывод: Понимание этой структуры = это фундамент. Из
main.dart: С чего начинается каждое Flutter-приложениеФайл
main.dart — это сердце вашего проекта на Flutter. Именно отсюда движок начинает выполнение кода. На этой инфографике мы детально разберем стандартную структуру этого файла:🔹1) Импорт пакетов: Мы подключаем
material.dart, библиотеку, которая содержит все основные виджеты для создания современного UI.🔹2) Функция
main(): Это «пусковой крючок». Она вызывает runApp(), которая прикрепляет ваш корневой виджет к экрану.🔹3) MyApp Widget: Наш главный виджет (
StatelessWidget), который служит оберткой для всего приложения.🔹4) MaterialApp: Здесь задаются глобальные настройки: тема, шрифты, скрытие баннера отладки и определение домашней страницы.
🔹5) HomeScreen: Первый экран, который увидит пользователь.
🔹 6) Scaffold: Каркас страницы. Он предоставляет готовую структуру для AppBar, тела страницы (body) и других элементов (кнопок, меню).
Ключевой вывод: Понимание этой структуры = это фундамент. Из
main.dart строится дерево виджетов.