Asyn c Вызовы для получения данных из параметров маршрута - PullRequest
0 голосов
/ 09 июля 2020

Есть небольшая путаница с моей стороны. Допустим, у меня есть виджет с отслеживанием состояния, которому нужно получить некоторые данные. В документации указано, что это не рекомендуется для метода сборки, поэтому я поместил его в файл initState. Это задокументировано здесь .

Я также реализовал именованную маршрутизацию из примеров документации здесь, которые выполняются с виджетами без сохранения состояния. Ссылка на статью здесь .

Когда я пытаюсь получить доступ к параметрам маршрута, initState выдает ошибку. Ошибка возникает специально при вызове ModelRoute.

@override
void initState() {

 super.initState();
 TownDetailPageArguments args = ModalRoute.of(context).settings.arguments;
}

[enter image description here] 3

Если этот код перемещен в метод сборки, он работает нормально.

Итак, у меня вопрос: каков рекомендуемый способ получить доступ к параметрам маршрута, чтобы использовать их для получения данных в виджете с отслеживанием состояния?

1 Ответ

0 голосов
/ 09 июля 2020

В методе initState отсутствует context, который необходимо передать, чтобы использовать метод of. Вместо этого вы должны использовать аналогичный метод didChangeDependencies, который имеет доступ к context. Различия между ними можно прочитать о здесь .

Пример использования (идентично initState, только что вызван немного позже):

@override
void didChangeDependencies() {

 super.didChangeDependencies();
 TownDetailPageArguments args = ModalRoute.of(context).settings.arguments;
}
...