flutter_audio_recorder_player 0.1.1 copy "flutter_audio_recorder_player: ^0.1.1" to clipboard
flutter_audio_recorder_player: ^0.1.1 copied to clipboard

A Flutter plugin for audio streaming, playback, and recording with advanced features like PCM data access, visualization, and background playback.

example/lib/main.dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'controllers/audio_controller.dart';
import 'controllers/local_audio_controller.dart';
import 'controllers/recordings_controller.dart';
import 'screens/home_screen.dart';
import 'screens/local_files_screen.dart';
import 'screens/recordings_screen.dart';
import 'screens/visualization_screen.dart';
import 'screens/background_playback_screen.dart';
import 'screens/features_demo_screen.dart';
import 'screens/audio_editing_screen.dart';
import 'examples/advanced_player_example.dart';
import 'examples/playlist_example.dart';
import 'theme/app_theme.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  @override
  void initState() {
    super.initState();
    _initPlatformState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> _initPlatformState() async {
    String platformVersion;
    try {
      platformVersion = defaultTargetPlatform.toString();

      // Request storage permissions at startup
      await _requestPermissions();
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  // Request necessary permissions
  Future<void> _requestPermissions() async {
    // Request storage permission
    var storageStatus = await Permission.storage.request();

    // For Android 11+, also request manage external storage permission
    if (defaultTargetPlatform == TargetPlatform.android) {
      var externalStatus = await Permission.manageExternalStorage.request();

      // Log permission status
      debugPrint('Storage permission: $storageStatus');
      debugPrint('External storage permission: $externalStatus');
    }

    // Request notification permission for background playback
    await Permission.notification.request();
  }

  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (_) => AudioController()),
        ChangeNotifierProvider(create: (_) => LocalAudioController()),
        ChangeNotifierProvider(create: (_) => RecordingsController()),
      ],
      // Force rebuild when any provider changes
      builder: (context, child) {
        debugPrint('Main app rebuilding due to provider change');
        return child!;
      },
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        theme: AppTheme.createTheme(),
        initialRoute: '/',
        routes: {
          '/': (context) => HomeScreen(platformVersion: _platformVersion),
          '/local_files': (context) => const LocalFilesScreen(),
          '/recordings': (context) => const RecordingsScreen(),
          '/advanced_player': (context) => const AdvancedPlayerExample(),
          '/playlist': (context) => const PlaylistExample(),
          '/visualization': (context) => const VisualizationScreen(),
          '/background': (context) => const BackgroundPlaybackScreen(),
          '/features': (context) => const FeaturesDemoScreen(),
          '/audio_editing': (context) => const AudioEditingScreen(),
        },
      ),
    );
  }
}
0
likes
140
points
67
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for audio streaming, playback, and recording with advanced features like PCM data access, visualization, and background playback.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

audio_service, audio_session, flutter, flutter_web_plugins, path, path_provider, plugin_platform_interface, rxdart

More

Packages that depend on flutter_audio_recorder_player