flutter - 跳出For循环以获取无效的图像链接 flutter

标签 flutter dart

我正在尝试通过图像创建一本书,其中包含本章的内容。图片链接采用以下方式:
https://www.someurl.com/chapter1/1.jpg https://www.someurl.com/chapter1/2.jpg https://www.someurl.com/chapter1/3.jpg . . .
不确定每章有多少个图像链接。我正在使用循环创建图像列表。进行迭代并最终找不到图像时,它将在下一章显示一个使用errorWidget的按钮,并且应该退出循环。通过以下实现,可以正确显示图像,但不会中断循环,并且会创建多个按钮。

编辑:我现在正在最后检查图像验证。现在,它仅显示一张图像,但会打印200(状态码),直到一次无效并退出循环为止。

 createBook() async {
    for(int i=1; i<100; i++){
      bool imageEnd = false;
      String imageUrl = 'https://www.someurl.com/chapter1/'+i+'.jpg';
      bookList.add(CachedNetworkImage(
        imageUrl: imageUrl,
        fit: BoxFit.cover,
        placeholder: (context, url) => Container(child: Center(child: CircularProgressIndicator())),
        errorWidget: (context, url, error) {
          imageEnd = true;
          return BtnNextChapter();
          },
      ));
      if(imageEnd){
        break;
      }
      final response = await http.get(imageUrl);
      print(response.statusCode);
      if (response.statusCode != 200) {
        break;
      }
    }
    }

enter image description here

最佳答案

从逻辑上讲,您应该有一种方法来知道每章有多少本书,并应该对其进行多次迭代。但是,要修复您的代码,请尝试以下操作。

  createBook(){
    for(int i=1; i<100; i++){
      final imageUrl = 'https://www.someurl.com/chapter1/'+i+'.jpg';
      final response = await http.get(imageUrl);
      print(response.statusCode);

      if (response.statusCode != 200) {
        bookList.add(BtnNextChapter());
      } else{
        bookList.add(CachedNetworkImage(
          imageUrl: imageUrl,
          fit: BoxFit.cover,
          placeholder: (context, url) => Container(child: Center(child: CircularProgressIndicator())),
        );
      }
     }
   }

使用以上代码,如果任何章节中的miga数超过100,您将错过这些图像。

关于flutter - 跳出For循环以获取无效的图像链接 flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61085379/

相关文章:

flutter - 未解析的引用 : FlutterActivity

flutter - 将小部件动画化到其父级之外的位置(行/ ListView )

flutter - 试图在 flutter driver 中获取多个元素(QA 环境)

dart - 如何在Visual Studio Code中为Dart变量设置语法突出显示

firebase - Flutter:Firebase FieldValue.serverTimestamp() 到 DateTime 对象

flutter - 根据类型名称动态创建实例

flutter - 我听不懂这条线

flutter - 如何添加可拖动的 "textfield"以在 flutter 的图像上添加文本?

loops - 我如何在 .forEach 迭代中暂停

redux - 学习 Flutter Redux - 这段代码有什么问题?