Перезагрузить текущий экран при возникновении исключения - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть экран, на котором пользователь может ввести некоторое число, которое он затем подтверждает.Подтверждение делает вызов API.Этот звонок может потерпеть неудачу.Когда это не удается, я показываю AlertDialog с showDialog.Я хочу, чтобы, когда пользователь закрывал диалоговое окно, экран обновлялся / перезагружался.Входные данные должны быть стерты (и есть некоторые другие эффекты, которые также должны быть сброшены).

Я не уверен, что лучший способ добиться этого -

  void _handleError(e) {
    showDialog(
      context: context,
      builder: (BuildContext builder) {
        return AlertDialog(
          title: Text(e.toString()),
          content: Text('Some content'),
        );
      },
    );
    // I'm guessing I should do something here?
  }

  // This is the handler for the confirm buttons `onPressed` field. 
  void _pay(context) {
    double amount = double.parse(textFieldController.text);

    apiClient
        .createInvoice(amount)
        .then((Map<String, dynamic> invoice) {
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) {
          return Pay(invoice);
        }),
      );
    }).catchError(handleError);
  }

1 Ответ

0 голосов
/ 11 сентября 2018

Функция showDialog() возвращает Future, когда она отклоняется.Таким образом, вы можете соединить then() вызов с showDialog() и выполнить уборку там.

void _handleError(e) {
  showDialog(
    context: context,
    builder: (BuildContext builder) {
      return AlertDialog(
        title: Text(e.toString()),
        content: Text('Some content'),
      );
    },
  ).then((_){
    //do your clean up
    _inputTextController.text = '';
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...