import 'package:assets_audio_player/assets_audio_player.dart'; import 'package:flutter/material.dart'; import 'package:flutter/painting.dart'; class PlayingControls extends StatelessWidget { final bool isPlaying; final LoopMode loopMode; final bool isPlaylist; final Function() onPrevious; final Function() onPlay; final Function() onNext; final Function() toggleLoop; final Function() onStop; PlayingControls({ @required this.isPlaying, this.isPlaylist = false, this.loopMode, this.toggleLoop, this.onPrevious, @required this.onPlay, this.onNext, this.onStop, }); Widget _loopIcon(BuildContext context) { final iconSize = 24.0; if( loopMode == LoopMode.none) { return Icon(Icons.loop,size: iconSize,color: Colors.white,); } else if(loopMode == LoopMode.playlist) { return Icon(Icons.loop,size: iconSize,color: Colors.white,); } else { return Stack( alignment: Alignment.center, children: [ Icon(Icons.loop,size: iconSize,color: Colors.white,), Center( child: Text('1',style: TextStyle(fontSize: 9,fontWeight: FontWeight.bold,color: Colors.white),), ) ], ); } return Radio( value: LoopMode.playlist, groupValue: this.loopMode, onChanged: (newValue) { toggleLoop(); } ); } @override Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ GestureDetector( onTap: (){ toggleLoop(); }, child: _loopIcon(context), ), SizedBox(width: 10,), IconButton( icon: Icon(isPlaying ? Icons.pause : Icons.play_arrow,size: 24,color: Colors.white,), onPressed: this.onPlay ), if( onStop != null ) IconButton( icon: Icon(Icons.stop,size: 24,color: Colors.white,), onPressed: this.onStop ) ], ); } }