manager-app/lib/Screens/Resources/get_element_for_resource.dart

63 lines
2.1 KiB
Dart

import 'package:manager_app/Components/audio_player.dart';
import 'package:manager_app/app_context.dart';
import 'package:manager_app/constants.dart';
import 'package:manager_api_new/api.dart';
import 'package:flutter/material.dart';
getElementForResource(dynamic resourceDTO, AppContext appContext) {
switch(resourceDTO.type) {
case ResourceType.Image:
return Image.network(
appContext.getContext().clientAPI.resourceApi.apiClient.basePath+"/api/Resource/"+ resourceDTO.id,
fit:BoxFit.fill,
loadingBuilder: (BuildContext context, Widget child,
ImageChunkEvent loadingProgress) {
if (loadingProgress == null) {
return child;
}
return Center(
child: CircularProgressIndicator(
color: kPrimaryColor,
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
loadingProgress.expectedTotalBytes
: null,
),
);
},
);
break;
case ResourceType.ImageUrl:
return Image.network(
resourceDTO.data,
fit:BoxFit.fill,
loadingBuilder: (BuildContext context, Widget child,
ImageChunkEvent loadingProgress) {
if (loadingProgress == null) {
return child;
}
return Center(
child: CircularProgressIndicator(
color: kPrimaryColor,
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
loadingProgress.expectedTotalBytes
: null,
),
);
},
);
break;
case ResourceType.Audio:
//return AudioPlayerContainer(resourceDTO: resourceDTO, isAuto: true);
return Text("Fichier audio - aucune visualisation possible");
break;
case ResourceType.Video:
return Text("Vidéo locale - aucune visualisation possible");
break;
case ResourceType.VideoUrl:
return Text(resourceDTO.data);
break;
}
}