Иван Шадрин родился 17 июня 1913 года в селе Плотниково (современный Каменский район Алтайского края) в крестьянской семье. Русский.
Работал в колхозе, а с 1938 года на сахарном заводе в поселке Кировский (современная Алматинская область Казахстана). В июле 1941 года был призван в Красную Армию и отправлен на фронт.
16 ноября 1941 года у разъезда Дубосеково Волоколамского района Московской области Иван Шадрин в составе группы истребителей танков участвовал в отражении многочисленных атак противника, было уничтожено, по данным официальной пропаганды, 18 вражеских танков. Данный подвиг вошёл в историю, как 28 героев-панфиловцев. Иван Шадрин в том бою был тяжело ранен и в бессознательном состоянии попал в плен, однако считался погибшим.
21 июля 1942 года Указом Президиума Верховного Совета СССР Шадрину Ивану Демидовичу было посмертно присвоено звание Героя Советского Союза за образцовое выполнение боевых заданий командования на фронте борьбы с немецко-фашистским захватчиками и проявленные при этом мужество и героизм.
Иван Шадрин после пленения прошёл несколько лагерей, участвовал в восстании военнопленных в концентрационном лагере Заксенхаузен. Со справкой военнопленного вернулся домой в 1947 году. Два года он перебивался случайными заработками, так как его «вдова» жила с новым мужем. После того, как секретарь райкома узнал его историю и сумел донести её до властей, ему была вручена «Золотая Звезда» (N 6754) Героя Советского Союза.
С 1958 года жил в Казахстане в поселке Кировский. Скончался 21 октября 1985 года.