easy_gallery_saver 1.0.1
easy_gallery_saver: ^1.0.1 copied to clipboard
Simple Flutter package to save images to gallery with one function call. Supports assets, files, and network images. No external dependencies for saving images.
πΈ Easy Gallery Saver #
Rasmlarni galereiyaga saqlash uchun eng oddiy va eng tez Flutter package!
Save images to gallery with just ONE line of code!
β‘ Nima uchun Easy Gallery Saver? #
β
Hech qanday tashqi dependency yo'q - To'liq native implementation
β
Bitta funksiya chaqiruvi - EasyGallerySaver.saveImage()
β
Asset, File, Network - Barcha manbalarni qo'llab-quvvatlaydi
β
Avtomatik ruxsat - Permission handling ichida
β
Custom album - O'z albomingizni yarating
β
Android 13+ support - Eng yangi Android versiyalari
β
iOS 11+ - Barcha iOS qurilmalari
π¦ O'rnatish / Installation #
pubspec.yaml fayliga qo'shing:
dependencies:
easy_gallery_saver: ^1.0.1
Keyin:
flutter pub get
π Foydalanish / Usage #
Import qiling #
import 'package:easy_gallery_saver/easy_gallery_saver.dart';
Bitta qatorlik kod! #
bool saved = await EasyGallerySaver.saveImage('assets/images/photo.jpg');
Bu qadar! π
π Batafsil misollar / Detailed Examples #
1οΈβ£ Asset dan rasm saqlash #
bool result = await EasyGallerySaver.saveImage('assets/images/logo.png');
if (result) {
print('β
Rasm saqlandi!');
} else {
print('β Xatolik yuz berdi');
}
2οΈβ£ Internetdan rasm saqlash #
await EasyGallerySaver.saveImage(
'https://picsum.photos/800/600'
);
3οΈβ£ File system dan rasm saqlash #
File imageFile = File('/path/to/image.jpg');
await EasyGallerySaver.saveImage(imageFile.path);
4οΈβ£ Custom albom nomi bilan #
await EasyGallerySaver.saveImage(
'assets/images/photo.jpg',
albumName: 'My Special Album',
);
5οΈβ£ Tugma bilan to'liq misol #
import 'package:flutter/material.dart';
import 'package:easy_gallery_saver/easy_gallery_saver.dart';
class SaveImageButton extends StatefulWidget {
@override
_SaveImageButtonState createState() => _SaveImageButtonState();
}
class _SaveImageButtonState extends State<SaveImageButton> {
bool _isLoading = false;
Future<void> _saveImage() async {
setState(() => _isLoading = true);
bool result = await EasyGallerySaver.saveImage(
'https://picsum.photos/800/600',
albumName: 'Downloaded Images',
);
setState(() => _isLoading = false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(result ? 'β
Saved!' : 'β Failed'),
backgroundColor: result ? Colors.green : Colors.red,
),
);
}
@override
Widget build(BuildContext context) {
return ElevatedButton.icon(
onPressed: _isLoading ? null : _saveImage,
icon: _isLoading
? SizedBox(
width: 20,
height: 20,
child: CircularProgressIndicator(strokeWidth: 2),
)
: Icon(Icons.download),
label: Text(_isLoading ? 'Saving...' : 'Save Image'),
);
}
}
6οΈβ£ Ruxsatni tekshirish #
bool hasPermission = await EasyGallerySaver.checkPermission();
if (!hasPermission) {
print('Galereiyaga kirish ruxsati yo\'q');
}
βοΈ Platformani sozlash / Platform Setup #
π± Android Setup #
android/app/src/main/AndroidManifest.xml fayliga qo'shing:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<!-- ... -->
</application>
<!-- Android 12 va pastroq uchun -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<!-- Android 13+ uchun -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
</manifest>
π iOS Setup #
ios/Runner/Info.plist fayliga qo'shing:
<dict>
<!-- ... boshqa sozlamalar ... -->
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Rasmlarni galereiyaga saqlash uchun ruxsat kerak</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Rasmlarni ko'rish uchun ruxsat kerak</string>
</dict>
π API Reference #
saveImage() #
Rasmni galereiyaga saqlaydi.
static Future<bool> saveImage(
String imagePath, {
String? albumName,
})
Parametrlar:
imagePath(String, required) - Rasm manbasi:- Asset:
'assets/images/photo.jpg' - File:
'/storage/emulated/0/Pictures/photo.jpg' - Network:
'https://example.com/image.jpg'
- Asset:
albumName(String, optional) - Albom nomi (default: "EasyGallerySaver")
Qaytaradi:
Future<bool>-trueagar muvaffaqiyatli,falseagar xatolik
Misol:
bool success = await EasyGallerySaver.saveImage(
'https://example.com/photo.jpg',
albumName: 'My Photos',
);
checkPermission() #
Galereiya ruxsati holatini tekshiradi.
static Future<bool> checkPermission()
Qaytaradi:
Future<bool>-trueagar ruxsat berilgan,falseagar yo'q
Misol:
bool hasPermission = await EasyGallerySaver.checkPermission();
π‘ Ko'p uchraydigan savollar / FAQ #
β Qanday formatlar qo'llab-quvvatlanadi? #
Barcha rasm formatlari: JPG, PNG, GIF, BMP, WebP va boshqalar.
β Rasmlar qayerga saqlanadi? #
Android: Pictures/[AlbumName]/ papkaga
iOS: Photo Library ga, belgilangan albomga
β Ruxsat avtomatik so'raladimi? #
Ha! Package avtomatik ravishda kerakli ruxsatlarni so'raydi.
β Internetdan yuklash vaqtini qanday boshqarish mumkin? #
Package avtomatik yuklaydi. Faqat loading indicator ko'rsatish kerak:
setState(() => isLoading = true);
await EasyGallerySaver.saveImage(url);
setState(() => isLoading = false);
β Bir nechta rasmni birgalikda saqlay olamanmi? #
Ha, loop dan foydalaning:
List<String> images = [
'https://example.com/1.jpg',
'https://example.com/2.jpg',
'https://example.com/3.jpg',
];
for (String url in images) {
await EasyGallerySaver.saveImage(url);
}
β Custom fayl nomini qo'yish mumkinmi? #
Rasmlar avtomatik IMG_YYYYMMDD_HHMMSS.jpg formatida nomlanadi.
π§ Texnik talablar / Requirements #
- Flutter SDK: >=3.0.0
- Dart SDK: >=3.10.0
- Android: API level 21+ (Android 5.0+)
- iOS: 11.0+
π¦ Dependencies #
Faqat bitta dependency:
permission_handler- Ruxsatlarni boshqarish uchun
Note: Biz image_gallery_saver ishlatmaymiz! To'liq native implementation.
π― Xususiyatlar / Features #
- β Native Android va iOS kodi
- β Scoped Storage (Android 10+) qo'llab-quvvatlash
- β Photo Library (iOS) to'liq qo'llab-quvvatlash
- β Avtomatik ruxsat so'rash
- β Custom album yaratish
- β Xatoliklarni boshqarish
- β Debugging support
- β Async/await qo'llab-quvvatlash
π Muammolar / Issues #
Muammo yuzaga kelsa:
- GitHub Issues ga xabar bering
- Muammoni batafsil tasvirlab bering
- Platforma va versiyani ko'rsating
- Error log ni qo'shing
π€ Hissa qo'shish / Contributing #
Hissa qo'shmoqchimisiz? Juda yaxshi!
- Repository ni fork qiling
- Feature branch yarating:
git checkout -b feature/NewFeature - O'zgarishlaringizni commit qiling:
git commit -m 'Add NewFeature' - Branch ni push qiling:
git push origin feature/NewFeature - Pull Request oching
π License #
MIT License - LICENSE faylida batafsil.
π¨βπ» Muallif / Author #
Abubakr - Flutter Developer
- GitHub: @AbubakrFlutter
- Email: your.email@example.com
β Yoqsa - yulduzcha bering! #
Agar bu package sizga yordam bergan bo'lsa, GitHub da β bosing!
π Minnatdorchilik #
- Flutter team
permission_handlerpackage developers- Barcha contributors
Made with β€οΈ in Uzbekistan πΊπΏ
Easy Gallery Saver - Rasmlarni saqlashning eng oson yo'li!