Flutter 我应该如何在另一个异步函数中使用异步未来列表?
我正在尝试使用异步方法从网站获取url列表。 在获得URL列表后,我尝试在另一个异步方法中使用URL 以下是获取URL的示例:Flutter 我应该如何在另一个异步函数中使用异步未来列表?,flutter,asynchronous,dart,Flutter,Asynchronous,Dart,我正在尝试使用异步方法从网站获取url列表。 在获得URL列表后,我尝试在另一个异步方法中使用URL 以下是获取URL的示例: void\u getData()异步{ 最后答复= 等待http.get('https://www.whateverurl'); 打印(响应状态码); documentdocument=parser.parse(response.body); final-elements2=document.getElementsByClassName('image-card-wrap
void\u getData()异步{
最后答复=
等待http.get('https://www.whateverurl');
打印(响应状态码);
documentdocument=parser.parse(response.body);
final-elements2=document.getElementsByClassName('image-card-wrapper');
设置状态(){
//获取链接,如/tiger/catalina等。
urlList=elements2.map((元素)异步{
url='1〕https://www.whateverurl' +
元素。getElementsByTagName('a')[0]。属性['href'];
打印(element.getElementsByTagName('a')[0].attributes['href']);
返回url;
}).toList();
等待(url列表);;
});
}
这是成功的。我可以拿到名单。我无法解决的是:我试图在另一个异步函数中使用此url列表来获取每个项目的特定技术信息
\u tryFetch(列表URL)异步{
字符串e='';
for(URL中的变量项){
试一试{
final response2=等待http.get(item);
documentdocument2=parser.parse(response2.body);
final elements=document2.getElementsByClassName('sqs-block-content');
elements.forEach((element){
if(element.getElementsByTagName('li').isNotEmpty){
列表a=element.getElementsByTagName('li');
印刷品(a.长度);
对于(变量i=0;i
在我的脚手架中,当尝试在ListView.builder中使用此teksniskInfo[index]时;
它抛出错误:未来字符串不是字符串的子字符串…
我试图添加一个按钮来使用_tryFetch()函数。我一按按钮它就工作了。但问题是,当我第一次导航到页面时,它抛出了我提到的错误
总结,;如何在另一个future函数中使用future列表?前言
async
的函数返回未来Future<String> foo() => ...;
Future<void> bar() {
final String = await foo();
}
...
await bar(); //somewhere else
...
您可以通过在异步结果之后调用setState
来缓解这一问题
void _getData() async {
...
await _tryFetch();
...
setState((){});
}
现在,您需要等待列表中的每个未来(最后等待)
List urlist=elements2.map((元素)异步{。。。
_tryFetch(列表URL)异步{
字符串e='';
for(URL中的变量项){
试一试{
final response2=wait http.get(wait item);//每个都是您需要等待的未来
但是不需要将async
匿名函数映射到(…)
结果将是List urlist=elements2.map((element){…
,无需等待每个列表项
请随时联系我的评论前言
async
的函数返回未来Future<String> foo() => ...;
Future<void> bar() {
final String = await foo();
}
...
await bar(); //somewhere else
...
您可以通过在异步结果之后调用setState
来缓解这一问题
void _getData() async {
...
await _tryFetch();
...
setState((){});
}
现在,您需要等待列表中的每个未来(最后等待)
List urlist=elements2.map((元素)异步{。。。
_tryFetch(列表URL)异步{
字符串e='';
for(URL中的变量项){
试一试{
final response2=wait http.get(wait item);//每个都是您需要等待的未来
但是不需要将async
匿名函数映射到(…)
结果将是List urlist=elements2.map((element){…
,无需等待每个列表项
请随时在评论中与我联系尝试将wait添加到urlist.wait\u tryFetch(wait urlist);或者删除elements2.map中的异步尝试将wait添加到urlist.wait\u tryFetch(wait urlist);或者删除elements2.map中的异步