在点击按钮之前执行的颤动代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在点击按钮之前执行的颤动代码相关的知识,希望对你有一定的参考价值。

我有一个ListTile(在抽屉里),点击它后,进入一个新的屏幕,在那个屏幕上,用户可以从一些(使用for循环)IconButtons(在ListView中)中选择,但是这个功能是当用户被发送到选择屏幕时(当他/她点击ListTile时)实际执行按钮时执行将被执行,因此该功能(顺便打开另一个屏幕)被执行相同的量在我的ListView中和单击它们之前有IconButtons的时间。

有关更多详细信息,请参阅源代码:

单击ListTile时:

              setState(() {
                goDownloads(files);
              });

打开新屏幕的功能:

goDownloads(List<File> files) async {
  for (int n = 0; n < files.length; n++) {
    String url = files[n].path;
    Widget container = new Container(
        child: new Row(
            children: <Widget>[
              new IconButton(
                onPressed: openBook(url),//This is the code that gets executed before it's supposed to
                icon: new Icon(Icons.open_in_browser),
            ),
...
          ]
      )
  );
  dlbooks.add(container);
}
setState(() {
  Navigator.of(context).push(new MaterialPageRoute<Null>(
    builder: (BuildContext context) {
      return new Scaffold(
        appBar: new AppBar(title: new Text('My Page')),
        body: new Center(
          child: new ListView(
              children: dlbooks
          ),
        ),
      );
    },
  ));
});
}

我也有一个main.dart文件中的完整代码,虽然我不推荐它,因为它写得不好,我还是一个菜鸟。 https://pastebin.com/vZapvCKx先谢谢!

答案

此代码将函数传递给按下按钮时执行的onPressed

onPressed: () => openBook(url)

你的代码

onPressed: openBook(url)

执行openBook(url)并将结果传递给onPressed,以便在按下按钮时执行,这似乎不是你想要的。

以上是关于在点击按钮之前执行的颤动代码的主要内容,如果未能解决你的问题,请参考以下文章

我该如何做模态对话框片段(代码在我关闭之前不会执行)

在颤动中隐藏后退按钮

如何在颤动中回调谷歌位置服务对话框按钮点击?

如何在颤动中加载数据之前显示进度对话框?

HTML代码片段

HTML代码片段