вторник, 1 февраля 2022 г.

Пакеты Flutter, которые я использую в каждом проекте


В этой статье я просто хочу познакомить новых пользователей с моими любимыми пакетами.

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

Эти пакеты и библиотеки Flutter используются для различных аспектов технологии Flutter. Итак, давайте с них начнем.

Управление состоянием

Я считаю, что riverpod — это самое прекрасное решение для управления состоянием.

Оно быстрое, надежное, совершенное. Ниже перечислены причины, по которым стоит выбрать Riverpod:

  • Он не зависит напрямую от Flutter SDK.

  • Riverpod можно использовать для создания и обеспечения однонаправленного потока данных с классами моделей, которые являются иммутабельными (то есть они не меняются).

  • Riverpod не зависит напрямую от дерева виджетов; его работа похожа на работу локатора служб. Провайдеры объявляются глобально и могут быть использованы в любом месте приложения

  • отлавливает ошибки программирования во время компиляции, а не во время исполнения

  • устраняет вложенность для прослушивания/комбинирования объектов

  • обеспечивает тестируемость кода

  • поддержка автоудаления

  • сравнение предыдущего и нового состояния

  • реализует механизм отмены-повторения (undo-redo)

  • отладка состояния приложения

Читайте мое руководство для riverpod.

Чистый код

flutter_hooks дает нам гораздо более чистый код и избавляет нас от бойлерплейт-кодов, обрабатывая их все за нас.

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

Формы

Я использую его для создания более четких и качественных форм flutter. Это помогает нам избавиться от большого количества бойлерплейт-кода.

Также у меня есть статья об этом пакете.

Моделирование

Классы данных в Dart — отстой. Потому что вам нужно вручную обрабатывать такие функции, как toJson-fromJson, они мутабельны и много чего еще.

Такие решения, как JSON to Dart и quicktype, дают нам лишь ограниченную конфигурацию и кастомизацию.

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

Это json_serializable и freezed

  • json_serializable помогает конвертировать наши модели в JSON или наоборот.

  • freezed также помогает создавать иммутабельные классы, что повышает надежность наших моделей.

JSON Serializable + Freezed - это идеальный вариант. С вашими моделями теперь не будет никаких проблем.

HTTP-клиент

dio намного лучше, чем пакет http.

Потому что он имеет интерцепторы и расширенные возможности, плагины cache_interceptor, pretty_dio_logger, cookie_manager; также можно создавать свои собственные интерцепторы.

Анимации

Lottie — это упрощенный пакет для создания анимации. Вы можете создавать анимацию в Adobe After Effects и легко анимировать на Flutter. Он быстрый и легкий, поэтому можно не беспокоиться о вероятных проблемах с памятью и процессором. Это сделает ваше приложение гораздо более удобным для пользователя.

Также вы можете найти множество анимаций здесь.

Хранилище

shared_preferences в порядке, но он медленный и очень ограниченный, слишком примитивный и переоцененный.

Я использую в основном пакет hive, но сейчас полюбил objectbox

  • Прост в использовании

  • Довольно быстрый

  • Безопасен (расширенная поддержка шифрования)

  • Работает не только с примитивами, также поддерживает и сложные объекты

  • Даже быстрее hive и поддерживает автоматическую синхронизацию данных между устройствами

I18N И L10N (Интернационализация и локализация)

Если ваше приложение многоязычное, то intl просто необходим, потому что он оказывает большую помощь в решении проблем локализации, таких как:

  • Часовые пояса

  • Временные форматы 

  • Форматы чисел

  • Форматы валют

  • Множественные числа и гендерные особенности …

Продакшн-хелпер

Вам не нужно обрабатывать все нативные коды и файлы.

Создайте нативную заставку всего одной командной строки.

Создайте иконки запуска каждого устройства с помощью всего одной волшебной команды. Для получения подробной информации ознакомьтесь с этой статьей.

Навигация и утилиты

GetX имеет довольно хорошую систему навигации и множество полезных функций.

  • Простота использования

  • Навигация без contex

  • Поддержка динамических URL

  • Поддержка промежуточного программного обеспечения

  • Также обладает таким количеством дополнительных функций, что я не в состоянии их все перечислить.

Подробнее прочитать можно здесь.

Также я использую это решение для управления состоянием и внедрения зависимости, но только для средних и небольших проектов.

Лучший UI/UX опыт 

Почему не нижний лист (bottom sheet) по умолчанию?

  • Он гораздо удобнее для пользователя

  • Возможность просмотра с внутренней прокруткой + перетаскивание вниз для закрытия

  • Поддержка нативного нижнего листа в виде стопки

  • Хорошо кастомизируемый

Пакет flash - это как швейцарский армейский нож. Он отлично кастомизируется и чрезвычайно мощный.

Я использую его для диалоговых окон, снекбаров и тостов.

Он хорошо кастомизируемый и гораздо более удобный для пользователя

Автоматическое кэширование изображений и профессиональная обработка изображений.


Материал подготовлен в рамках курса «Flutter Mobile Developer».

Всех желающих приглашаем на бесплатный двухдневный интенсив «Flutter engine, анимация и ее оптимизация». На интенсиве мы рассмотрим самые глубокие механизмы Flutter Engine и научимся создавать сложные и плавные анимации как на мобильных платформах, так и веб-версии, использовать инструменты профилирования для исключения "замерзания" интерфейса. Также мы затронем тему использования WebGL в веб-приложениях на Flutter для создания трехмерных сцен. Регистрация здесь.

Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

Комментариев нет :

Отправить комментарий

друзья )

Сохраняйте и делитесь желаниями, и не забывайте о важных датах! парсинг центр