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