Flutter自动调整图片大小插件auto_resize_image的使用
Flutter自动调整图片大小插件auto_resize_image的使用
AutoResizeImage
语言: 简体中文
根据容器的大小自动调整图片缓存大小。
特性
支持多种类型的ImageProvider
,包括NetworkImage
、AssetImage
、FileImage
等。
支持<a href="https://pub.dev/packages/cached_network_image">CachedNetworkImageProvider</a>
。
debugInvertOversizedImages = false | debugInvertOversizedImages = true |
---|---|
使用方法
dependencies:
auto_resize_image: ^1.0.0
SizedBox(
width: 200,
height: 200,
child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Image(
fit: BoxFit.cover,
image: AutoResizeImage(
imageProvider: CachedNetworkImageProvider(url),
width: constraints.maxWidth,
height: constraints.maxHeight,
),
);
},
),
),
额外信息
绿色框表示容器的大小,红色框表示图片缓存的大小。
ResizeMode | 图解 | 清晰度/内存使用 | 超出尺寸 |
---|---|---|---|
contain | 低 | 否 | |
balance | 中 | 否 | |
cover | 高 | 是 |
完整示例代码
以下是一个完整的示例代码,展示了如何在应用中使用AutoResizeImage
插件。
import 'package:auto_resize_image/auto_resize_image.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'generated/assets.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'AutoResizeImage Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: const ImagePage(),
);
}
}
class ImagePage extends StatelessWidget {
const ImagePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
var url = "https://s2.loli.net/2024/02/27/yHRMwZr9lnjc7z4.jpg";
debugInvertOversizedImages = true;
return Scaffold(
appBar: AppBar(title: const Text('AutoResizeImage Demo')),
body: Wrap(
children: [
_buildImage(text: 'CachedNetworkImage', imageProvider: CachedNetworkImageProvider(url)),
_buildImage(text: 'NetworkImage', imageProvider: NetworkImage(url)),
_buildImage(text: 'AssetsImage contain', imageProvider: const AssetImage(Assets.assetsAa), resizeMode: ResizeMode.contain),
_buildImage(text: 'AssetsImage balance', imageProvider: const AssetImage(Assets.assetsAa), resizeMode: ResizeMode.balance),
_buildImage(text: 'AssetsImage cover', imageProvider: const AssetImage(Assets.assetsAa), resizeMode: ResizeMode.cover),
_buildImage(text: 'Long image cover', imageProvider: const AssetImage(Assets.assetsLong)),
],
),
);
}
Widget _buildImage({
required String text,
required ImageProvider imageProvider,
ResizeMode resizeMode = ResizeMode.balance,
}) {
return Column(
children: [
SizedBox(
width: 180,
height: 180,
child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Image(
fit: BoxFit.cover,
image: AutoResizeImage(
resizeMode: resizeMode,
imageProvider: imageProvider,
width: constraints.maxWidth,
height: constraints.maxHeight,
),
);
},
),
),
Text(text)
],
);
}
}
更多关于Flutter自动调整图片大小插件auto_resize_image的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自动调整图片大小插件auto_resize_image的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用auto_resize_image
插件来自动调整图片大小的代码示例。auto_resize_image
插件能够根据父容器的尺寸自动调整图片的显示大小,非常适合在响应式布局中使用。
首先,确保你已经在pubspec.yaml
文件中添加了auto_resize_image
依赖:
dependencies:
flutter:
sdk: flutter
auto_resize_image: ^3.0.0+3 # 请根据需要替换为最新版本
然后,运行flutter pub get
来获取依赖。
接下来,在你的Dart文件中使用AutoResizeImage
组件。以下是一个简单的示例,展示如何在Flutter应用中自动调整图片大小:
import 'package:flutter/material.dart';
import 'package:auto_resize_image/auto_resize_image.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Auto Resize Image Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 使用AutoResizeImage组件
AutoResizeImage.network(
'https://via.placeholder.com/600',
width: double.infinity, // 宽度设为父容器宽度
),
SizedBox(height: 20),
AutoResizeImage.asset(
'assets/my_image.png', // 替换为你的本地图片路径
height: 300, // 高度设为固定值
),
],
),
),
),
);
}
}
代码解释:
- 导入依赖:首先导入
auto_resize_image
包。 - 网络图片:
- 使用
AutoResizeImage.network
方法加载网络图片。 width: double.infinity
表示图片的宽度将扩展至父容器的宽度,高度将按比例自动调整。
- 使用
- 本地图片:
- 使用
AutoResizeImage.asset
方法加载本地图片。 height: 300
表示图片的高度固定为300像素,宽度将按比例自动调整。
- 使用
注意事项:
- 确保你已经在
pubspec.yaml
中声明了所有本地图片资源。 AutoResizeImage
组件支持多种配置,如placeholder
、errorWidget
等,可以根据需要自行配置。
通过上述代码,你可以在Flutter应用中轻松实现图片的自动调整大小功能。