【问题标题】:Image.network stops showing imagesImage.network 停止显示图像
【发布时间】:2020-10-11 07:17:01
【问题描述】:

要测试的示例代码

import 'dart:async';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
// This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State {
  StreamController controller;
  List imgs = [
    'https://images.unsplash.com/photo-1519336367661-eba9c1dfa5e9?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80',
    'https://images.unsplash.com/photo-1594164070019-a3bd58576d55?ixlib=rb-1.2.1&auto=format&fit=crop&w=675&q=80',
    'http://www.example.com'
  ];
  int i = 0;
  @override
  void initState() {
    super.initState();

    controller = StreamController();
    const oneSec = const Duration(seconds: 5);
    new Timer.periodic(oneSec, (Timer t) {
      print('value of i $i');
      controller.sink.add(imgs[i]);
      i++;
      if (i > 2) {
        i = 0;
      }
    });
  }

  @override
  void dispose() {
    controller.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder(
        stream: controller.stream,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return Image.network(
              snapshot.data,
              loadingBuilder: (context, child, loading) {
                if (loading == null) return Center(child: child);
                return Center(child: CircularProgressIndicator());
              },
              errorBuilder: (context, object, error) {
                return Center(child: CircularProgressIndicator());
              },
            );
          } else {
            return Container();
          }
        },
      ),
    );
  }
}

第三张图片不显示。这很明显。但是在errorBuilder之后,代码没有显示任何其他有效的网络图像。

在 github 中,我说这是一个错误。
但是团队说我必须在stackoverflow中提出问题

这是一个错误还是我犯了什么错误?

  • 请避免阅读以下文字:* It looks like your post is mostly code; please add some more details. - 来自 stackoverflow 的错误。我现在必须填写没有任何意义的不需要的词 :-( 有时代码足以描述问题

【问题讨论】:

  • 你和我都知道第三张图片实际上是一个网站的链接,但 errorBuilder 显示的是错误的替换,即 CircularProgressIndicator。比什么问题?你没有正确地阐述你的问题。
  • The third image is not displayed. It is obvious. But after errorBuilder, The code does not show any other valid network images. 在第三张图片之后,如果您看到代码,我想再次显示未显示的第一张图片。我做了很少的测试,它发生在mac而不是windows

标签: flutter


【解决方案1】:

我认为您可以在Image.network 中添加key: UniqueKey(),。 Flutter 总是尝试重用大部分小部件以避免渲染成本(可能会保持错误状态)。添加UniqueKey 强制重建。

【讨论】:

猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2011-10-01
  • 2019-09-08
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多