How do I determine the width and height of an image in Flutter?

后端 未结 5 1547
傲寒
傲寒 2020-11-27 15:00

Assume I have declared my image in my pubspec.yaml like this:

  assets:
    - assets/kitten.jpg

And my Flutter code is this:



        
5条回答
  •  感情败类
    2020-11-27 15:31

    You can resolve the ImageProvider to get an ImageStream, then use addListener to be notified when the image is ready.

    import 'dart:ui' as ui;
    import 'dart:async';
    import 'package:flutter/material.dart';
    import 'package:flutter/services.dart';
    
    void main() {
      runApp(new MaterialApp(
        home: new MyHomePage(),
      ));
    }
    
    class MyHomePage extends StatelessWidget {
    
      Future _getImage() {
        Completer completer = new Completer();
        new NetworkImage('https://i.stack.imgur.com/lkd0a.png')
          .resolve(new ImageConfiguration())
          .addListener((ImageInfo info, bool _) => completer.complete(info.image));
        return completer.future;
      }
    
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(
            title: new Text("Image Dimensions Example"),
          ),
          body: new Center(
            child: new FutureBuilder(
              future: _getImage(),
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                if (snapshot.hasData) {
                  ui.Image image = snapshot.data;
                  return new Text(
                    '${image.width}x${image.height}',
                    style: Theme.of(context).textTheme.display4);
                } else {
                  return new Text('Loading...');
                }
              },
            ),
          ),
        );
      }
    }
    

提交回复
热议问题