发生异常时重新加载当前屏幕

问题描述 投票:0回答:1

我有一个屏幕,用户可以输入一些他然后确认的号码。确认进行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);
  }
flutter
1个回答
0
投票

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 = '';
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.