Flutter: виджет динамического списка

Теперь, когда мы умеем читать данные из сети, сохранять их локально, осталось научится отображать их в виде красивого списка на отдельном экране. Создадим отдельный файл tmclist.dart:

И далее в body вставляем виджет ListView.builder который может строить список на основе списка данных. В простейшем случае это было бы:

Но так не интересно, просто список без «украшений», потому я чкть усложнил, но суть остается едина:

Результат:

Остался вопрос, как навесить действие на выбор какого то пункта, и распознать какой собственно пункт выбрали? А вот для этого служит специальный виджет GestureDetector, который собственно это всё и позволяет делать:

Получим при клике по пунктам меню:

Flutter: Хранение данных приложения

На этом месте должна была быть статья по работу Flutter с SQLite, но не сложилось. Не умеет Flutter без плясок с бубном работать с SQLite одновременно на всех целевых платформах сразу: WIndows/Android/IOS. Самый популярный пакет sqflite — работает только на Android/IOS, остальные, задекларированные как рабочие под Windows, по оной так запустить мне и не удалось, с учётом что у меня ограниченные права Windows. Потому, стал смотреть в сторону пакета Hive — работающего на всех целевых платформах, т.к. написан изначально на языке Dart.

Hive -это быстрая локальная база для Flutter, Dart работающая на основе ключ-значение.

Установка: добавить в зависимости pubsec.yaml:

Для удобства можно написать маленький класс для работы с ключами-значениями:

И теперь например можно при новом запуске приложения «вспоминать» авторизацию:

main.dart:

login.dart:

Причем нужно отметить свойства сохранения и извлечения ключ-значение: при сохранении мы не ждем результата записи. При чтении — соответственно необходимо дождаться.

Ошибка: as been blocked by CORS policy

В одной из задач возникла проблема: скрипт javascript «крутящийся» на localhost должен утянуть файл json с удаленного ресурса https. Вот тут и возникает ошибка:

Возникает она из-за политик CORS удаленного сайта.

Решение: добавить в скрипт который «выдает» данные, заголовок, что конкретно эти данные можно отдавать ну например ..всем.

Flutter: переопределение кнопки «назад» в AppBar

Возникла ситуация: на одной из страниц (например авторизация) произошли изменения, касающиеся «стартового» экрана с изменением пунктов меню в drawer, ну и его шапке соотвественно. Но возник нюанс — при нажатии кнопки «назад» в AppBar, перерисовка меню не происходит.

Что будем делать? Одним из вариантов решения проблемы является перехват нажатия кнопки при помощи виджета WildPopScope и принудительная перерисовка при помощи вызова роутинга:

Flutter: работа с json

В предыдущей статье мы получили по URL json данные. Теперь задача их обработать.

Для работы с json, необходимо импортировать библиотеку:

Далее загрузим данные в тип Map:

А что если это массив?

В этом случае загрузим JSON в объет List:

Обратная конвертация:

1 50 51 52 53 54 293