// import 'package:flutter/material.dart'; // import 'package:just_audio/just_audio.dart'; // import 'package:rxdart/rxdart.dart'; // import '../../chatScreen.dart'; // import '../../common.dart'; // import '../globals.dart'; // class AudioBubble extends StatefulWidget { // const AudioBubble({Key? key, required this.currIndex}) : super(key: key); // final int currIndex; // @override // State createState() => _AudioBubbleState(); // } // class _AudioBubbleState extends State { // //AudioPlayer player = AudioPlayer(); // //Duration? duration, totalduration; // String msgid = ""; // @override // void initState() { // super.initState(); // msgid = chatMessageList[widget.currIndex].messageId!; // print("key===${widget.key}"); // // setAudio(); // /* player.setFilePath(widget.filepath).then((value) { // setState(() { // duration = value; // }); // }); */ // } // @override // Widget build(BuildContext context) { // return audioWidget(chatMessageList[widget.currIndex].messageId!, // chatMessageList[widget.currIndex].audioPlayer!); // /* // return Container( // height: 45, // width: MediaQuery.of(context).size.width / 1.5, // padding: const EdgeInsets.only(left: 12, right: 18), // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(Globals.borderRadius - 10), // color: Colors.grey.withOpacity(0.2), // //color: Colors.black, // ), // child: Row( // crossAxisAlignment: CrossAxisAlignment.center, // children: [ // StreamBuilder( // stream: player.playerStateStream, // builder: (context, snapshot) { // final playerState = snapshot.data; // final processingState = playerState?.processingState; // final playing = playerState?.playing; // if (processingState == ProcessingState.loading || // processingState == ProcessingState.buffering) { // return GestureDetector( // child: const Icon(Icons.play_arrow), // onTap: () { // player.play(); // }, // ); // } else if (playing != true) { // return GestureDetector( // child: const Icon(Icons.play_arrow), // onTap: player.play, // ); // } else if (processingState != ProcessingState.completed) { // return GestureDetector( // child: const Icon(Icons.pause), // onTap: player.pause, // ); // } else { // return GestureDetector( // child: const Icon(Icons.replay), // onTap: () { // player.seek(Duration.zero); // }, // ); // } // }, // ), // const SizedBox(width: 8), // Expanded( // child: StreamBuilder( // stream: player.positionStream, // builder: (context, snapshot) { // if (snapshot.hasData) { // return Column( // mainAxisAlignment: MainAxisAlignment.center, // children: [ // const SizedBox(height: 4), // LinearProgressIndicator( // value: snapshot.data!.inMilliseconds / // (duration?.inMilliseconds ?? 1), // backgroundColor: Colors.grey, // color: ColorsRes.appcolor, // ), // const SizedBox(height: 6), // Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Text( // prettyDuration(snapshot.data! == Duration.zero // ? duration ?? Duration.zero // : snapshot.data!), // style: const TextStyle( // fontSize: 10, // color: Colors.grey, // ), // ), // Text( // prettyDuration(totalduration ?? Duration.zero), // style: const TextStyle( // fontSize: 10, // color: Colors.grey, // ), // ), // /*const Text( // "M4A", // style: TextStyle( // fontSize: 10, // color: Colors.grey, // ), // ),*/ // ], // ), // ], // ); // } else { // return const LinearProgressIndicator(); // } // }, // ), // ), // ], // ), // ); // */ // } // /* // @override // Widget build(BuildContext context) { // return Padding( // padding: const EdgeInsets.symmetric(vertical: 4), // child: Row( // mainAxisAlignment: MainAxisAlignment.end, // children: [ // SizedBox(width: MediaQuery.of(context).size.width * 0.4), // Expanded( // child: Container( // height: 45, // padding: const EdgeInsets.only(left: 12, right: 18), // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(Globals.borderRadius - 10), // color: Colors.white, // //color: Colors.black, // ), // child: Column( // mainAxisAlignment: MainAxisAlignment.center, // children: [ // // const SizedBox(height: 4), // Row( // children: [ // StreamBuilder( // stream: player.playerStateStream, // builder: (context, snapshot) { // final playerState = snapshot.data; // final processingState = playerState?.processingState; // final playing = playerState?.playing; // if (processingState == ProcessingState.loading || // processingState == ProcessingState.buffering) { // return GestureDetector( // child: const Icon(Icons.play_arrow), // onTap: player.play, // ); // } else if (playing != true) { // return GestureDetector( // child: const Icon(Icons.play_arrow), // onTap: player.play, // ); // } else if (processingState != // ProcessingState.completed) { // return GestureDetector( // child: const Icon(Icons.pause), // onTap: player.pause, // ); // } else { // return GestureDetector( // child: const Icon(Icons.replay), // onTap: () { // player.seek(Duration.zero); // }, // ); // } // }, // ), // const SizedBox(width: 8), // Expanded( // child: StreamBuilder( // stream: player.positionStream, // builder: (context, snapshot) { // if (snapshot.hasData) { // return Column( // children: [ // const SizedBox(height: 4), // LinearProgressIndicator( // value: snapshot.data!.inMilliseconds / // (duration?.inMilliseconds ?? 1), // ), // const SizedBox(height: 6), // Row( // mainAxisAlignment: // MainAxisAlignment.spaceBetween, // children: [ // Text( // prettyDuration( // snapshot.data! == Duration.zero // ? duration ?? Duration.zero // : snapshot.data!), // style: const TextStyle( // fontSize: 10, // color: Colors.grey, // ), // ), // const Text( // "M4A", // style: TextStyle( // fontSize: 10, // color: Colors.grey, // ), // ), // ], // ), // ], // ); // } else { // return const LinearProgressIndicator(); // } // }, // ), // ), // ], // ), // ], // ), // ), // ), // ], // ), // ); // } */ // String prettyDuration(Duration d) { // var min = d.inMinutes < 10 ? "0${d.inMinutes}" : d.inMinutes.toString(); // var sec = d.inSeconds < 10 ? "0${d.inSeconds}" : d.inSeconds.toString(); // return "$min:$sec"; // } // audioWidget(String msgid, AudioPlayer? player) { // // print("map-$msgid-$audioplaysermap"); // Map? map = audioplaysermap[msgid]; // //AudioPlayer player = map!["player"]; // if (player == null) return const SizedBox.shrink(); // return Container( // //height: 50, // width: MediaQuery.of(context).size.width / 1.5, // padding: const EdgeInsets.only(left: 8, right: 18), // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(Globals.borderRadius - 10), // color: Colors.grey.withOpacity(0.2), // //color: Colors.black, // ), // child: Row(crossAxisAlignment: CrossAxisAlignment.center, children: [ // StreamBuilder( // stream: player.playerStateStream, // builder: (context, snapshot) { // final playerState = snapshot.data; // final processingState = playerState?.processingState; // bool playing = playerState?.playing ?? false; // print("state---$playing==$processingState"); // if (processingState == ProcessingState.completed && // player.position != Duration.zero) { // player.seek(Duration.zero); // player.pause(); // } // if (processingState == ProcessingState.loading || // processingState == ProcessingState.buffering) { // return IconButton( // icon: const Icon(Icons.play_arrow), // iconSize: 30.0, // onPressed: () {}, // ); // } else if (!playing || // processingState == ProcessingState.completed) { // return IconButton( // icon: const Icon(Icons.play_arrow), // iconSize: 30.0, // onPressed: () { // /* if (currPlayingAudioId != msgid && // currAudioplayer != null && // currAudioplayer!.playing) { // currAudioplayer!.stop(); // } */ // if (currPlayingAudioId != msgid && // audioplaysermap.containsKey(currPlayingAudioId) && // audioplaysermap[currPlayingAudioId]!["player"] != null && // audioplaysermap[currPlayingAudioId]!["player"].playing) { // audioplaysermap[currPlayingAudioId]!["player"].pause(); // } // print("click===${player.duration}"); // if (processingState == ProcessingState.completed && // player.position != Duration.zero) { // player.seek(Duration.zero); // } // player.play(); // print("click===**${player.playing}"); // currPlayingAudioId = msgid; // currAudioplayer = player; // }, // ); // } else if (processingState != ProcessingState.completed) { // return IconButton( // icon: const Icon(Icons.pause), // iconSize: 30.0, // onPressed: player.pause, // ); // } else { // return IconButton( // icon: const Icon(Icons.replay), // iconSize: 64.0, // onPressed: () => player.seek(Duration.zero), // ); // } // }, // ), // Expanded( // child: StreamBuilder( // //stream: _positionDataStream, // stream: getPositionStream(player), // builder: (context, snapshot) { // final positionData = snapshot.data; // return SeekBar( // duration: positionData?.duration ?? Duration.zero, // position: positionData?.position ?? Duration.zero, // bufferedPosition: // positionData?.bufferedPosition ?? Duration.zero, // onChangeEnd: player.seek, // ); // }, // ), // ) // ]), // ); // } // Stream getPositionStream(AudioPlayer player) { // Stream data = // Rx.combineLatest3( // player.positionStream, // player.bufferedPositionStream, // player.durationStream, // (position, bufferedPosition, duration) => PositionData( // position, bufferedPosition, duration ?? Duration.zero)); // return data; // } // } // /* // audioWidget(String msgid, AudioPlayer? player) { // print("map-$msgid-$audioplaysermap"); // Map? map = audioplaysermap[msgid]; // //AudioPlayer player = map!["player"]; // if (player == null) return const SizedBox.shrink(); // return Row(mainAxisSize: MainAxisSize.min, children: [ // CircleAvatar( // radius: 30, // child: Column(mainAxisSize: MainAxisSize.min, children: [ // const Icon(Icons.headphones), // Text( // Constant.getDurationFormat(player.duration!), // style: // Theme.of(context).textTheme.caption!.apply(color: Colors.white), // ) // ]), // ), // StreamBuilder( // stream: player.playerStateStream, // builder: (context, snapshot) { // final playerState = snapshot.data; // final processingState = playerState?.processingState; // bool playing = playerState?.playing ?? false; // print("state---$playing==$processingState"); // if (processingState == ProcessingState.completed && // player.position != Duration.zero) { // player.seek(Duration.zero); // player.pause(); // } // if (processingState == ProcessingState.loading || // processingState == ProcessingState.buffering) { // return Container( // margin: const EdgeInsets.all(8.0), // width: 30.0, // height: 30.0, // child: const CircularProgressIndicator(), // ); // } else if (!playing || processingState == ProcessingState.completed) { // return IconButton( // icon: const Icon(Icons.play_arrow), // iconSize: 30.0, // onPressed: () { // /* if (currPlayingAudioId != msgid && // currAudioplayer != null && // currAudioplayer!.playing) { // currAudioplayer!.stop(); // } */ // if (currPlayingAudioId != msgid && // audioplaysermap.containsKey(currPlayingAudioId) && // audioplaysermap[currPlayingAudioId]!["player"] != null && // audioplaysermap[currPlayingAudioId]!["player"].playing) { // audioplaysermap[currPlayingAudioId]!["player"].pause(); // } // print("click===${player.duration}"); // if (processingState == ProcessingState.completed && // player.position != Duration.zero) { // player.seek(Duration.zero); // } // player.play(); // print("click===**${player.playing}"); // currPlayingAudioId = msgid; // currAudioplayer = player; // }, // ); // } else if (processingState != ProcessingState.completed) { // return IconButton( // icon: const Icon(Icons.pause), // iconSize: 30.0, // onPressed: player.pause, // ); // } else { // return IconButton( // icon: const Icon(Icons.replay), // iconSize: 64.0, // onPressed: () => player.seek(Duration.zero), // ); // } // }, // ), // Expanded( // child: StreamBuilder( // //stream: _positionDataStream, // stream: getPositionStream(player), // builder: (context, snapshot) { // final positionData = snapshot.data; // return SeekBar( // duration: positionData?.duration ?? Duration.zero, // position: positionData?.position ?? Duration.zero, // bufferedPosition: positionData?.bufferedPosition ?? Duration.zero, // onChangeEnd: player.seek, // ); // }, // ), // ) // ]); // } // Stream getPositionStream(AudioPlayer player) { // Stream data = // Rx.combineLatest3( // player.positionStream, // player.bufferedPositionStream, // player.durationStream, // (position, bufferedPosition, duration) => PositionData( // position, bufferedPosition, duration ?? Duration.zero)); // return data; // } // */