首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将未来作为参数传递给另一个类

将未来作为参数传递给另一个类
EN

Stack Overflow用户
提问于 2019-11-19 05:54:59
回答 1查看 817关注 0票数 0

是否有可能将未来传递给对话框助手类,我试图在用户加载失败时显示对话框,当用户单击“重试”时,应用程序将再次启动网络调用

将来传入对话框类

代码语言:javascript
运行
复制
void getCountryApi() async {

    GlobalService globalService = new GlobalService();

    ...

    //wait for future to be finished
    bool isSuccessful =
        await globalService.requestApi(CountryApi, queryParameters, context);
    if (isSuccessful) {
      dialogManager.information2(context, 'Success', globalService.fullData);
    } else {
      //dialogManager.information2(context, 'Success', globalService.fullData);
      dialogManager.retryDialog(context, 'Failed', globalService.fullData,globalService.requestApi(CountryApi, queryParameters, context));
    }
  }

对话框助手类

代码语言:javascript
运行
复制
retryDialog(BuildContext context, String title, String description, Future apiCall) {
    return showDialog(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return WillPopScope(
            onWillPop: () {},
            child: AlertDialog(
              title: Text(title),
              content: Column(
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[
                  Text(description),
                  Row(
                    mainAxisSize: MainAxisSize.min,
                    children: <Widget>[
                      SizedBox(height: 30),
                      Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: RaisedButton(
                          shape: new RoundedRectangleBorder(
                            borderRadius: new BorderRadius.circular(30.0),
                          ),
                          color: Colors.red,
                          onPressed: () async {
                            Navigator.pop(context);
                            await apiCall;
                          },
                          child: Text(
                            'Retry',
                            style: TextStyle(color: Colors.white),
                          ),
                        ),
                      ),                    
                    ],
                  ),
                ],
              ),
            ),
          );
        });
  }

我面临的问题是,未来的对象在这行中立即执行一个网络调用

代码语言:javascript
运行
复制
dialogManager.retryDialog(context, 'Failed', globalService.fullData,globalService.requestApi(CountryApi, queryParameters, context));

,即在用户单击“重试”按钮之前。

EN

回答 1

Stack Overflow用户

发布于 2019-11-19 08:06:09

您的方法是不正确的,在成功或失败时,您只需要显示警报对话,并在警报按钮上提到所有API调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58927508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档