AlertDialog без контекста во флаттере - PullRequest
1 голос
/ 23 мая 2019

Я хочу показать AlertDialog, когда не удается получить http. Функция showDialog (https://api.flutter.dev/flutter/material/showDialog.html) имеет параметр "@required BuildContext context", но я хочу вызвать AlertDialog из моей асинхронной функции getNews (), которая не имеет значения контекста.

По аналогии с Java, где я использую null для диалога без владельца, я пытался установить значение контекста в null, но это не принимается.

Это мой код:

  Future<dynamic> getNews() async {
    dynamic retVal;
    try {
      var response = await http.get(url));
      if (response.statusCode == HttpStatus.ok) {
        retVal = jsonDecode(response.body);
      }
    } catch (e) {
      alertDlg(?????????, 'Error', e.toString());
  }
    return
    retVal;
  }

  static Future<void> alertDlg(context, String titolo, String messaggio) async {
    return showDialog<void>(
        context: context,
        barrierDismissible: false, // user must tap button!
        builder: (BuildContext context) {
        return AlertDialog(
              title: Text(titolo),
        ...
    );
  }

1 Ответ

1 голос
/ 23 мая 2019

Перехватите исключение, когда вы делаете вызов getNews, если используете await, иначе используйте свойство catchError в Future.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...