Спасибо! Очень полезный урок! Если при кодогенерации JSON, у кого выходит вот такая ошибка "Generator cannot target libraries that have not been migrated to null-safety.", обратите внимание на версии json_annotation и json_serializable версии пакетов должны поддерживаться в environment SDK
Пол дня мучался, пришёл к некоторым выводам, может помогу кому-то, если "address.g.dart" не создаётся, сначала сохраните этот файл Ctrl + S, и только потом - flutter pub run build_runner build Если же при создании "address.g.dart" выдаёт ошибку, мне помогли следующие команды в терминале: -flutter clean -flutter pub cache repair -flutter pub run build_runner clean И наконец-то -flutter pub get -flutter pub run build_runner build
Хм..С ссылкой коммент потерло, но попробую без ссылки . Первое - классные, внятные уроки! Firebase - очень жду). И еще - после тучи попыток рекомендую приложение в VS Code - Dart Data Class Generator (Beta). Да, бета. Но на месте, быстро и без ошибок, генерирует модель для очень развесистого Json (из погодного API), без ручной работы, которая необходима в json_serializable.
Я вот недавно исспользовал этот плагин VS Code - Dart Data Class Generator (Beta), но у меня почемуто криво сгенерировало, полезли ошибки. Попробовал описаную выше в видео генерацию и все нормально заработало
Отличный урок, спасибо! try catch, конечно нужно народ приучать везде использовать ) Кстати, интересно - как по феншую обрабатывать исключение, я имею ввиду где регистрировать событие (по аналогии с журналом приложения сервера) и как сообщать разработчику об исключении
Первый раз работал с JSON, пытался сделать как Евгений. в итоге пару часов ловил ошибку. Ошибка была в том, что я JSON файл неправильно оформил, поставил просто лишние запятые в конце файла..... будьте внимательны
Вы в начале сказали что Json это строка, а потом в методе fromJson вы считаете что вам должен прилететь массив. Не правильно ли будет в методе fromJson получать на вход строку и там её парить? Или я что-то пропустил?
Доброго времени суток! Можно обратиться с одной просьбой? ) Мы в команде переписываем один проект с RN на Flutter так как уперлись в потолок производительности RN. Проект с огромными списками на сокетах.Уже готовы в принципе на релиз но уже поймали несколько раз баг когда команда на бекенде добавляет поле (ключ) в JSON и мы ловим баг что модель не готова принять дополнительное поле так как оно не описано. Например у меня такая модель @freezed class Instrument with _$Instrument { const factory Instrument({ @Default('') String symbol, @Default('') String description, }) = _Instrument; factory Instrument.fromJson(Map json) => _$InstrumentFromJson(json); } А бекенд взяли и добавили еще одно поле ключ например "String typeName" и соответсвенно Instrument.fromJson() метод мне ничего не отпадёт так как такое поле не описано в моей модели. Есть какой то нормальный путь как это обойти не дергая на горячую json['symbol'] и т.д. Не подскажете со своего опыта как можно обойти такой баг? Заранее благодарю Андрей.
Не очень понял проблемы. Если добавить новое поле то клиент будет корректно работать, и получать данные, но конечно, данное поле он не получит, потому что не знает про него. Так что если у вас что то добавили на бекенде и вам надо его использовать, меняйте модель на клиенте.
@@LearnDartFlutter я неправильно выразился. Имел ввиду, есть ли какая-то аннотация у того генератора кода, с помощью которой можно было бы ему подсказать что вот "это" поле - это не просто строка, а дата, т.е. чтобы он после прочтения значения поля и сконвертировал бы его в наше поле класса типа "дата"