Проблема возникает из-за того, что вы получаете значение после чтения чего-либо с диска. И чтение с диска занимает несколько миллисекунд. К этому времени значение переменной _counter останется нулевым, и тогда он покажет красный экран.
Чтобы решить проблему, инициализируйте _counter со значением, скажем, -1 (или что-то еще, что работает с logi c). И оберните назначение в setState (). Итак, что-то вроде:
От:
_counter = await _______ ;
Кому:
int _counter = -1;
...
...
setState() => _counter = await _______ ;