Вы всегда должны проверять, есть ли у вашего снимка какие-либо данные или иметь нулевое значение,
if(snapshot!=null)
Тогда вам всегда следует проверять, имеют ли данные внутри снимка нулевое значение или нет,
if(snapshot.data!=null)
Кроме того, в вашем случае вы называете данные о нулевом объекте.
Я думаю, вам нужно заменить снимок ['item_name'] на snapshot.data['item_name'] для всего элемента.
Вы по ошибке вызываете snapshot ["your_field"] вместо snapshot.data ["your_field"], которая вызывает проблему.
Кроме того, всегда рекомендуется проверять нулевую безопасность при разборе данных из сети.