How do I tell when a NetworkImage has finished loading?

后端 未结 5 2090
野的像风
野的像风 2020-12-29 10:36

I have a NetworkImage and I\'d like to know when it\'s finished loading. How do I do that?

5条回答
  •  盖世英雄少女心
    2020-12-29 11:08

    You can resolve to get an ImageStream and addListener to the ImageStream

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(new MyApp());
    }
    
    class MyApp extends StatefulWidget {
      State createState() => new MyAppState();
    }
    
    class MyAppState extends State {
      Image _image = new Image.network(
        'https://flutter.io/images/flutter-mark-square-100.png',
      );
      bool _loading = true;
    
      @override
      void initState() {
        _image.image.resolve(new ImageConfiguration()).addListener((_, __) {
          if (mounted) {
            setState(() {
              _loading = false;
            });
          }
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          home: new Scaffold(
            body: new Center(
              child: _loading ? new Text('Loading...') : _image,
            ),
          ),
        );
      }
    }
    

提交回复
热议问题