diff --git a/android/local.properties b/android/local.properties index cd8d56d..a2b3710 100644 --- a/android/local.properties +++ b/android/local.properties @@ -1,5 +1,5 @@ sdk.dir=C:\\Users\\Housh11\\AppData\\Local\\Android\\sdk flutter.sdk=C:\\src\\flutter -flutter.buildMode=release +flutter.buildMode=debug flutter.versionName=1.3.41 flutter.versionCode=37 \ No newline at end of file diff --git a/packages/core/lib/presentation/widget/image_list/image_list.dart b/packages/core/lib/presentation/widget/image_list/image_list.dart new file mode 100644 index 0000000..05f53e8 --- /dev/null +++ b/packages/core/lib/presentation/widget/image_list/image_list.dart @@ -0,0 +1,158 @@ +/* import 'package:flutter/material.dart'; + +class ImageList extends StatelessWidget { + const ImageList({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + child: Stack( + children: [ + PageView.builder( + controller: pageController, + itemCount: images.length, + onPageChanged: (index) { + currentIndex.value = index; + }, + itemBuilder: (context, index) { + return InteractiveViewer( + minScale: 0.5, + maxScale: 4.0, + child: Center( + child: Image.file( + File(images[index].path), + fit: BoxFit.contain, + errorBuilder: (context, error, stackTrace) { + return Center( + child: Icon( + Icons.error, + color: Colors.white, + size: 50, + ), + ); + }, + ), + ), + ); + }, + ), + Positioned( + top: 40, + right: 16, + child: IconButton( + icon: Icon(Icons.close, color: Colors.white, size: 30), + onPressed: () => Get.back(), + ), + ), + if (images.length > 1) + Positioned( + bottom: 20, + left: 0, + right: 0, + child: Center( + child: Obx( + () => Container( + padding: EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: Colors.black54, + borderRadius: BorderRadius.circular(20), + ), + child: Text( + '${currentIndex.value + 1} / ${images.length}', + style: TextStyle(color: Colors.white, fontSize: 14), + ), + ), + ), + ), + ), + ], + ), + + ); + } +} +void _showLocalImageDialog(List images, int initialIndex) { + final pageController = PageController(initialPage: initialIndex); + final currentIndex = initialIndex.obs; + + Get.dialog( + Dialog( + backgroundColor: Colors.transparent, + insetPadding: EdgeInsets.zero, + child: Container( + width: Get.width, + height: Get.height, + color: Colors.black, + child: Stack( + children: [ + PageView.builder( + controller: pageController, + itemCount: images.length, + onPageChanged: (index) { + currentIndex.value = index; + }, + itemBuilder: (context, index) { + return InteractiveViewer( + minScale: 0.5, + maxScale: 4.0, + child: Center( + child: Image.file( + File(images[index].path), + fit: BoxFit.contain, + errorBuilder: (context, error, stackTrace) { + return Center( + child: Icon( + Icons.error, + color: Colors.white, + size: 50, + ), + ); + }, + ), + ), + ); + }, + ), + Positioned( + top: 40, + right: 16, + child: IconButton( + icon: Icon(Icons.close, color: Colors.white, size: 30), + onPressed: () => Get.back(), + ), + ), + if (images.length > 1) + Positioned( + bottom: 20, + left: 0, + right: 0, + child: Center( + child: Obx( + () => Container( + padding: EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: Colors.black54, + borderRadius: BorderRadius.circular(20), + ), + child: Text( + '${currentIndex.value + 1} / ${images.length}', + style: TextStyle(color: Colors.white, fontSize: 14), + ), + ), + ), + ), + ), + ], + ), + ), + ), + barrierDismissible: true, + ); +} + */ \ No newline at end of file diff --git a/packages/core/lib/presentation/widget/image_picker/image_picker_widget.dart b/packages/core/lib/presentation/widget/image_picker/image_picker_widget.dart index 557bbd0..6888f45 100644 --- a/packages/core/lib/presentation/widget/image_picker/image_picker_widget.dart +++ b/packages/core/lib/presentation/widget/image_picker/image_picker_widget.dart @@ -59,7 +59,7 @@ class _RImagePickerState extends State { width: 40.w, height: 40.h, decoration: BoxDecoration( - color: Colors.white.withAlpha(50), + color: Colors.white.withAlpha(80), borderRadius: BorderRadius.circular(10.r), ), child: Icon( diff --git a/pubspec.lock b/pubspec.lock index ee97555..71dc334 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -365,10 +365,10 @@ packages: dependency: transitive description: name: device_preview_plus - sha256: eb3e67929c9f04759e0d3708ad91d1018235549bcf8699f8a94909684c6555ae + sha256: d55e6197bad38b5eb304ba4e3ec3979971d8f69599b5109406022cf978dd2be2 url: "https://pub.dev" source: hosted - version: "2.5.5" + version: "2.5.6" dio: dependency: transitive description: diff --git a/tools/check_unused_assets.dart b/tools/check_unused_assets.dart index 673f956..a091c1b 100644 --- a/tools/check_unused_assets.dart +++ b/tools/check_unused_assets.dart @@ -1,5 +1,5 @@ /// اسکریپت برای بررسی Assets استفاده نشده -/// +/// /// استفاده: /// dart run tools/check_unused_assets.dart @@ -10,7 +10,7 @@ void main() async { // لیست تمام assets final assets = []; - + // خواندن assets از پوشه‌ها final assetDirs = [ 'assets/icons', @@ -46,12 +46,12 @@ void main() async { for (final file in codeFiles) { final content = await file.readAsString(); - + for (final asset in assets) { // استخراج نام فایل از مسیر final fileName = asset.split('/').last; final fileNameWithoutExt = fileName.split('.').first; - + // جستجوی استفاده در کد if (content.contains(asset) || content.contains(fileName) || @@ -63,7 +63,9 @@ void main() async { } // پیدا کردن assets استفاده نشده - final unusedAssets = assets.where((asset) => !usedAssets.contains(asset)).toList(); + final unusedAssets = assets + .where((asset) => !usedAssets.contains(asset)) + .toList(); print('✅ Assets استفاده شده: ${usedAssets.length}'); print('❌ Assets استفاده نشده: ${unusedAssets.length}\n'); @@ -97,4 +99,3 @@ String _getAssetCategory(String assetPath) { if (assetPath.contains('anim/')) return 'anim'; return 'unknown'; } -