add asset validation

This commit is contained in:
hannathkadher
2025-01-09 16:18:19 +04:00
parent 097e70b906
commit 67516817ec
3 changed files with 36 additions and 14 deletions

View File

@ -8,6 +8,7 @@ import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/add_device_type_widget.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/dialogs/icon_selection_dialog.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/hoverable_button.dart';
import 'package:syncrow_web/utils/asset_validator.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/constants/space_icon_const.dart';
@ -60,7 +61,7 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
@override
@override
Widget build(BuildContext context) {
Future<Widget> build(BuildContext context) async {
final screenWidth = MediaQuery.of(context).size.width;
return AlertDialog(
@ -91,7 +92,9 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
),
),
SvgPicture.asset(
selectedIcon,
await AssetValidator.isValidAsset(selectedIcon)
? selectedIcon
: Assets.location,
width: screenWidth * 0.04,
height: screenWidth * 0.04,
),
@ -143,7 +146,8 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
}
});
},
style: const TextStyle(color: ColorsManager.blackColor),
style:
const TextStyle(color: ColorsManager.blackColor),
decoration: InputDecoration(
hintText: 'Please enter the name',
hintStyle: const TextStyle(

View File

@ -19,23 +19,26 @@ class CommunitySpaceManagementApi {
.replaceAll('{projectId}', TempConst.projectId),
queryParameters: {'page': page},
expectedResponseModel: (json) {
List<dynamic> jsonData = json['data'];
hasNext = json['hasNext'] ?? false;
int currentPage = json['page'] ?? 1;
List<CommunityModel> communityList = jsonData.map((jsonItem) {
return CommunityModel.fromJson(jsonItem);
}).toList();
allCommunities.addAll(communityList);
page = currentPage + 1;
return communityList;
try {
List<dynamic> jsonData = json['data'] ?? [];
hasNext = json['hasNext'] ?? false;
int currentPage = json['page'] ?? 1;
List<CommunityModel> communityList = jsonData.map((jsonItem) {
return CommunityModel.fromJson(jsonItem);
}).toList();
allCommunities.addAll(communityList);
page = currentPage + 1;
return communityList;
} catch (_) {
hasNext = false;
return [];
}
},
);
}
return allCommunities;
} catch (e) {
debugPrint('Error fetching communities: $e');
return [];
}
}

View File

@ -0,0 +1,15 @@
import 'package:flutter/services.dart';
class AssetValidator {
static Future<bool> isValidAsset(String? assetPath) async {
if (assetPath == null || assetPath.isEmpty) {
return false;
}
try {
await rootBundle.load(assetPath);
return true;
} catch (_) {
return false;
}
}
}