如何在Flutter中加载巨大的图像?

时间:2018-03-26 11:23:51

标签: dart flutter

如何在flutter中加载一个巨大的位图?例如,我有一个图像3000x3000px,我需要在图像小部件中显示大小为100x100px。在android SDK中,我可以使用BitmapOption.inSampleSize来加载缩小的图像。 Flutter SDK中是否有类似的东西?

1 个答案:

答案 0 :(得分:0)

作为选项,您可以使用ResizeImage小部件:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(home: Home()));
}

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  ResizeImage img;

  @override
  void initState() {
    super.initState();
    img = ResizeImage(NetworkImage('https://picsum.photos/3000/3000'), width: 100, height: 100);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Center(child: Image(image: img)));
  }
}

如果将此代码添加到initState

img.resolve(ImageConfiguration()).addListener(ImageStreamListener((info, bool _)async {
  var data = await info.image.toByteData();
  print('==== ${img.width}   ${img.height}  ${data.buffer.asUint32List().length}');
}));

您将在日志中看到此行

==== 100   100 10000