background_audio 0.0.2 copy "background_audio: ^0.0.2" to clipboard
background_audio: ^0.0.2 copied to clipboard

outdated

A new Flutter plugin.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:background_audio/background_audio.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String status = 'stopped';
  
  List<Map> playlists = [
    {
      "songs": [{
          "title": "First song",
          "author": "Unknown",
          "url": "https://youvix.org/storage/songs/NpUAUkN7mLWn4MAqHTadV4TMK74YvNO4YiJMoW0fIMiM0iskfT.mp3"
        }, {
          "title": "New Order",
          "author": "Blue Monday 88",
          "url": "https://youvix.org/storage/songs/OpeDvywtyJcoqBk4dxnYM0MzYSPM9QHUulVHwGUV5Xy8A67NLw.mp3"
        }],
      "metadata": {"id": "1", "title": "Playlist one"}
    },
    {
      "songs": [{
          "title": "First song(2 playlist)",
          "author": "Unknown",
          "url": "https://youvix.org/storage/songs/NpUAUkN7mLWn4MAqHTadV4TMK74YvNO4YiJMoW0fIMiM0iskfT.mp3"
        }, {
          "title": "New Order(2 playlist)",
          "author": "Blue Monday 88",
          "url": "https://youvix.org/storage/songs/OpeDvywtyJcoqBk4dxnYM0MzYSPM9QHUulVHwGUV5Xy8A67NLw.mp3"
        }],
      "metadata": {"id": "2", "title": "Playlist two"}
    }
  ];
  
  @override
  void initState() {
    super.initState();

    BackgroundAudio.init().then((e) {
      if (BackgroundAudio.playlist != null) {
        if (BackgroundAudio.playing) {
          setState(() => status = 'play');
        } else {
          setState(() => status = 'pause');
        }
      }
    });

    BackgroundAudio.onTogglePlayback((bool playing) {
      setState(() => status = playing ? 'play' : 'pause');
    });

    BackgroundAudio.onDuration((int duration) {
      setState(() {});
    });

    BackgroundAudio.onPosition((int position) {
      setState(() {});
    });
    
    BackgroundAudio.onNext(() {
      
    });

    BackgroundAudio.onPrev(() {
      
    });

    BackgroundAudio.onSelect(() {
      print('notification selected');
    });

    BackgroundAudio.onStop(() {
      setState(() => status = 'stopped');
    });
  }

  stop() {
    BackgroundAudio.stop();
  }

  toggle() {
    BackgroundAudio.toggle();
  }

  play(Map playlist, int index) async {
    await BackgroundAudio.setPlaylist(BackgroundAudioPlaylist.fromJson(playlist));
    BackgroundAudio.play(index);
  }

  Widget _buildPlaylist(Map playlist) {
    return Container(
      width: 180.0,
      margin: EdgeInsets.only(top: 20.0),
      child: Column(
        children: <Widget>[
          Text(playlist["metadata"]["title"], style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16.0)),
          ListView.builder(
            shrinkWrap: true,
            itemBuilder: (context, i) => ListTile(
              title: Text(playlist["songs"][i]["title"], textAlign: TextAlign.center, style: TextStyle(fontSize: 14.0),),
              onTap: () {
                play(playlist, i);
              },
            ),itemCount: playlist["songs"].length,
          )
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {

    var player = BackgroundAudio.song == null ? Container() : Container(
      height: 240.0,
      child: Column(
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              FlatButton(child: Icon(Icons.close), onPressed: stop),
            ],
          ),
          Divider(),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              BackgroundAudio.song == null ? Container() :
              Flexible(
                child: Column(children: <Widget>[
                  Text(BackgroundAudio.song.title, style: TextStyle(fontSize: 16.0)),
                  Text(BackgroundAudio.song.author),
                  SizedBox(height: 12.0),
                  Text((BackgroundAudio.playlist.metadata["title"] ?? ""), 
                    style: TextStyle(fontSize: 16.0, color: Colors.grey),
                  ),
                ]),
              ),
            ]
          ),
          Text(BackgroundAudio.position.toString()+'/'+BackgroundAudio.duration.toString()),
           Slider(
             onChanged: (val) {
               BackgroundAudio.seekTo(val.toInt());
             },
             value: BackgroundAudio.position.toDouble(),
             max: BackgroundAudio.duration.toDouble(),
           ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              FlatButton(child: Icon(Icons.skip_previous, size: 50.0), onPressed: BackgroundAudio.prev),
              FlatButton(child: Icon(
                status == 'pause' ? Icons.play_circle_outline : Icons.pause_circle_outline,
                size: 50.0,
              ), onPressed: toggle),
              FlatButton(child: Icon(Icons.skip_next, size: 50.0), onPressed: BackgroundAudio.next),
            ]
          ),
        ]
      ),
    );

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Plugin example app'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                _buildPlaylist(playlists[0]),
                _buildPlaylist(playlists[1]),
              ],
            ),
            status == 'stopped' ? Container() : player,
          ],
        )
      ),
    );
  }
}
0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

A new Flutter plugin.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on background_audio