ez_image_fetch_package 0.0.1
ez_image_fetch_package: ^0.0.1 copied to clipboard
A Flutter package for efficient image fetching and caching with in-memory and disk cache support, including download management and performance logging.
ez_image_fetch_package #
ez_image_fetch_package is a Flutter library for efficient image fetching and caching. It integrates with Dio for fast image downloads and supports both memory and disk caching with customizable error handling.
Features #
Fast image downloading with Dio Memory and disk caching Customizable error handling Installation Add the package to your pubspec.yaml:
yaml #
dependencies: ez_image_fetch_package: ^0.0.1
Usage - Basic Example #
import 'package:ez_image_fetch_package/ez_disk_cache.dart';
import 'package:ez_image_fetch_package/ez_image_fetcher.dart';
import 'package:ez_image_fetch_package/ez_task_manager.dart';
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'package:logger/logger.dart';
void main() {
runApp(ExampleScreen());
}
class ExampleScreen extends StatelessWidget {
final EzImageFetcher imageFetcher = EzImageFetcher(
dio: Dio()
..httpClientAdapter = NativeAdapter(
createCupertinoConfiguration: () =>
URLSessionConfiguration.ephemeralSessionConfiguration()),
diskCache: EzDiskCache(),
taskManager: EzTaskManager(maxRunningTask: 44),
errorImage: Image.asset("assets/dog.png"),
logger: Logger(),
);
ExampleScreen({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Image Fetch Example')),
body: GridView.builder(
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, // 3 columns in the grid
crossAxisSpacing: 8.0,
mainAxisSpacing: 8.0,
),
itemCount: 25,
itemBuilder: (context, index) {
final imageUrl =
'https://via.placeholder.com/200x200.png?text=$index';
return FutureBuilder<Image>(
future: imageFetcher.fetchImage(imageUrl),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return const Center(child: Icon(Icons.error));
} else {
return snapshot.data!;
}
},
);
},
),
),
);
}
}