import 'dart:convert'; import 'dart:typed_data'; import 'package:manager_app/Components/audio_player.dart'; import 'package:manager_app/Components/loading_common.dart'; import 'package:manager_app/Models/managerContext.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'; import 'package:http/http.dart' as http; 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 FutureBuilder( future: getAudio(resourceDTO.id, appContext), builder: (context, AsyncSnapshot snapshot) { Size size = MediaQuery.of(context).size; if (snapshot.connectionState == ConnectionState.done) { var audioBytes; if(snapshot.data != null) { print("snapshot.data"); print(snapshot.data); audioBytes = snapshot.data; //this.player.playBytes(audiobytes); } return AudioPlayerFloatingContainer(audioBytes: audioBytes, isAuto: true); } else if (snapshot.connectionState == ConnectionState.none) { return Text("No data"); } else { return Center( child: Container( height: size.height * 0.2, child: LoadingCommon() ) ); } } ); //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; } } Future getAudio(String resourceId, AppContext appContext) async { try { ManagerAppContext managerAppContext = appContext.getContext() as ManagerAppContext; var url = managerAppContext.host + "/api/Resource/" + resourceId; // TO TEST TODO UPDATE ROUTE var test2 = await http.readBytes(Uri.parse(url)); final base64Str = base64.encode(test2); Uint8List base64String = base64Decode(base64Str); // LOAD DATA return base64String; } catch (e) { print(e); print("IN CATCH"); return null; } }