Для нашего следующего выпуска мы решили выбрать тему сугубо практическую. Мы собрали все известные нам способы хранения данных: от записи в файл и key-value хранилищ, до полноценных БД, а затем, подробно рассмотрев достоинства и недостатки, нашли применение каждому... ну почти.

https://soundcloud.com/flutterdevpodcast/31-sposoby-khraneniya-dannykh

Как понять, что настало время развернуть базу данных? Что выбрать: SQL или NoSQL? Стоит ли использовать старый-добрый shared_preferences или лучше заменить его на get_storage? Что выбрать для хранения данных, утечку которых не хотелось бы допустить?

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

У микрофона: Евгений Сатуров (Surf), Михаил Матюнин (Ozon), Андрей Смирнов (fin_hood).

Главное по выпуску:

❗️ Официальный рекомендации по реализации хранения данных во Flutter https://flutter.dev/docs/cookbook/persistence

❗️ Key/Value-хранилища:
- shared_preferences https://pub.dev/packages/shared_preferences
- get_storage https://pub.dev/packages/get_storage
❗️ NoSQL базы данных:
- hive https://pub.dev/packages/hive
- objectbox https://pub.dev/packages/objectbox
- sembast https://pub.dev/packages/sembast
❗️ Object-Relational Mapping (ORM) для SQLite:
- moor https://pub.dev/packages/moor
- floor https://pub.dev/packages/floor
- sqflite https://pub.dev/packages/sqflite
❗️ Secured-хранилища:
- flutter_secure_storage https://pub.dev/packages/flutter_secure_storage
- biometric_storage https://pub.dev/packages/biometric_storage
- flutter_keychain https://pub.dev/packages/flutter_keychain
❗️ Remote-хранилища:
- firebase_database https://pub.dev/packages/firebase_database
- firebase_storage https://pub.dev/packages/firebase_storage

Новости:
⚡️ Лучшие подкасты про Flutter https://www.freecodecamp.org/news/best-podcasts-for-flutter-developers/?utm_source=pocket_mylist
⚡️ Статья про Flutter Hot Reload https://medium.com/flutter/flutter-hot-reload-f3c5994e2cee

Официальный канал подкаста: t.me/flutterdevpodcast_news
Официальный чат подкаста: t.me/flutterdevpodcast

2 comments

Добавил бы еще любопытную Isar (https://pub.dev/packages/isar) от автора Хайва и официальную Realm (https://pub.dev/packages/realm), которые, судя по апдейтам, её забросили (но там есть что посмотреть)
Еще можно упомянуть про возможность создавать защищенные паролем базы
sqflite с помощью sqflite_sqlcipher.
В свою очередь тоже пришел к хранению веб-кеша в файловой системе, и усовершенствовал его тем что json данные предварительно архивировались перед сохранением (это давало выигрыш в объёме до 10 раз и в скорости сохранения на диск из-за меньшего объёма), а данные картинок - локально тоже "архивировались" тем, что приводились к формату jpg с сжатием и авто-ресайзом в размер 1080p только тех что превышают