vinyl 0.0.3 copy "vinyl: ^0.0.3" to clipboard
vinyl: ^0.0.3 copied to clipboard

Batteries included audio lib

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:vinyl/ui/player_widgets.dart';
import 'package:vinyl/vinyl.dart';

Future<void> main() async {
  const config = AudioServiceConfig(
    androidNotificationChannelId: "app.dumb.vinyltest",
    androidNotificationChannelName: "test Player",
    androidNotificationOngoing: true,
  );
  await vinyl.init(audioConfig: config);

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
            seedColor: Colors.deepPurple, brightness: Brightness.dark),
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  // TODO objectives
  // testing load media
  // testing basic media controls
  // testing ui response

  List<MediaRecord> medias = [
    MediaRecord(
      id: "12312",
      title: 'mp3 test file',
      mediaUri:
          'https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3',
    ),
    MediaRecord(
      id: 'test2',
      title: 'flac test file',
      mediaUri:
          'https://www.learningcontainer.com/wp-content/uploads/2020/02/Sample-FLAC-File.flac',
    ),
    MediaRecord(
      id: 'test3',
      title: 'ogg test file',
      mediaUri:
          'https://www.learningcontainer.com/wp-content/uploads/2020/02/Sample-OGG-File.ogg',
    ),
  ];

  Future<void> playMany() async {
    await vinyl.player.loadMedia(medias);
    await vinyl.player.play();
  }

  Future<void> playOne() async {
    await vinyl.player.loadMedia([medias.first]);
    await vinyl.player.play();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          const CurrentSongTitle(),
          const AudioProgressBar(),
          const Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              PreviousSongButton(),
              SeekBackwardButton(seekValue: Duration(seconds: 10)),
              Padding(padding: EdgeInsets.symmetric(horizontal: 10)),
              PlayPauseButton(),
              Padding(padding: EdgeInsets.symmetric(horizontal: 10)),
              SeekForwardButton(seekValue: Duration(seconds: 10)),
              NextSongButton(),
            ],
          ),
          const PlaybackSpeedButton(speeds: [0.25, 0.5, 1, 1.25, 1.5, 2]),
          const Padding(padding: EdgeInsets.symmetric(horizontal: 10)),
          ElevatedButton(
            onPressed: () async {
              await playOne();
            },
            child: const Text('Play one'),
          ),
          ElevatedButton(
            onPressed: () async {
              await playMany();
            },
            child: const Text('Play Many'),
          )
        ],
      ),
    );
  }
}
2
likes
130
points
1
downloads

Publisher

unverified uploader

Weekly Downloads

Batteries included audio lib

Repository (GitHub)
View/report issues

Documentation

API reference

License

GPL-3.0 (license)

Dependencies

audio_service, audio_video_progress_bar, cached_network_image, flutter, media_kit, media_kit_libs_audio

More

Packages that depend on vinyl