Ошибка довольно точно описывает происходящее, вы пытаетесь потреблять String
, и у вас нет поставщика String
.
Если вместо FutureProvider(...etc
вы пишете FutureProvider<String>(...etc
ваша IDE укажет, что catchError
возвращает Void . Это означает, что вы возвращаете String в create
и Void в catchError
, делая провайдера типа dynamici c.
Чтобы решить эту проблему, заставьте catchError
вернуть 'error' или что-либо, что вы выберете, при условии, что это строка.
catchError: (_, error) {
print(error);
return 'error';
},
Редактировать
В качестве первого комментария , вы все равно получите ошибку. Поскольку у FutureProvider нет initialValue, для него установлено значение null. Это означает, что самый первый запуск передаст нулевое значение текстовому виджету.
Этого можно избежать, установив initialValue для FutureProvider в значение «loading ...», например.