diff --git a/just_audio/example/.gitignore b/just_audio/example/.gitignore deleted file mode 100644 index 7c36bfa..0000000 --- a/just_audio/example/.gitignore +++ /dev/null @@ -1,85 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java - -# iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* -**/ios/Flutter/Flutter.podspec - -# Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/just_audio/example/.metadata b/just_audio/example/.metadata deleted file mode 100644 index fea404f..0000000 --- a/just_audio/example/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled and should not be manually edited. - -version: - revision: 68587a0916366e9512a78df22c44163d041dd5f3 - channel: stable - -project_type: app diff --git a/just_audio/example/README.md b/just_audio/example/README.md deleted file mode 100644 index 009ea35..0000000 --- a/just_audio/example/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# just_audio_example - -Demonstrates how to use the just_audio plugin. - -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) - -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/just_audio/example/android/.gitignore b/just_audio/example/android/.gitignore deleted file mode 100644 index bc2100d..0000000 --- a/just_audio/example/android/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java diff --git a/just_audio/example/android/app/build.gradle b/just_audio/example/android/app/build.gradle deleted file mode 100644 index a6aa025..0000000 --- a/just_audio/example/android/app/build.gradle +++ /dev/null @@ -1,61 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion 28 - - lintOptions { - disable 'InvalidPackage' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.ryanheise.just_audio_example" - minSdkVersion 19 - targetSdkVersion 28 - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' -} diff --git a/just_audio/example/android/app/src/debug/AndroidManifest.xml b/just_audio/example/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index df636f4..0000000 --- a/just_audio/example/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/just_audio/example/android/app/src/main/AndroidManifest.xml b/just_audio/example/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index bfbd136..0000000 --- a/just_audio/example/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/just_audio/example/android/app/src/main/java/com/ryanheise/just_audio_example/MainActivity.java b/just_audio/example/android/app/src/main/java/com/ryanheise/just_audio_example/MainActivity.java deleted file mode 100644 index ccea830..0000000 --- a/just_audio/example/android/app/src/main/java/com/ryanheise/just_audio_example/MainActivity.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.ryanheise.just_audio_example; - -import io.flutter.embedding.android.FlutterActivity; - -public class MainActivity extends FlutterActivity { -} diff --git a/just_audio/example/android/app/src/main/res/drawable/launch_background.xml b/just_audio/example/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f..0000000 --- a/just_audio/example/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/just_audio/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/just_audio/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4..0000000 Binary files a/just_audio/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/just_audio/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/just_audio/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b7..0000000 Binary files a/just_audio/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/just_audio/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/just_audio/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 09d4391..0000000 Binary files a/just_audio/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/just_audio/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/just_audio/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d..0000000 Binary files a/just_audio/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/just_audio/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/just_audio/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372e..0000000 Binary files a/just_audio/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/just_audio/example/android/app/src/main/res/values/styles.xml b/just_audio/example/android/app/src/main/res/values/styles.xml deleted file mode 100644 index 00fa441..0000000 --- a/just_audio/example/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/just_audio/example/android/app/src/profile/AndroidManifest.xml b/just_audio/example/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index df636f4..0000000 --- a/just_audio/example/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/just_audio/example/android/build.gradle b/just_audio/example/android/build.gradle deleted file mode 100644 index e0d7ae2..0000000 --- a/just_audio/example/android/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -buildscript { - repositories { - google() - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' - } -} - -allprojects { - repositories { - google() - jcenter() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/just_audio/example/android/gradle.properties b/just_audio/example/android/gradle.properties deleted file mode 100644 index 38c8d45..0000000 --- a/just_audio/example/android/gradle.properties +++ /dev/null @@ -1,4 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.enableR8=true -android.useAndroidX=true -android.enableJetifier=true diff --git a/just_audio/example/android/gradle/wrapper/gradle-wrapper.properties b/just_audio/example/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 7c4388a..0000000 --- a/just_audio/example/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/just_audio/example/android/settings.gradle b/just_audio/example/android/settings.gradle deleted file mode 100644 index 5a2f14f..0000000 --- a/just_audio/example/android/settings.gradle +++ /dev/null @@ -1,15 +0,0 @@ -include ':app' - -def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() - -def plugins = new Properties() -def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') -if (pluginsFile.exists()) { - pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } -} - -plugins.each { name, path -> - def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() - include ":$name" - project(":$name").projectDir = pluginDirectory -} diff --git a/just_audio/example/android/settings_aar.gradle b/just_audio/example/android/settings_aar.gradle deleted file mode 100644 index e7b4def..0000000 --- a/just_audio/example/android/settings_aar.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':app' diff --git a/just_audio/example/ios/.gitignore b/just_audio/example/ios/.gitignore deleted file mode 100644 index e96ef60..0000000 --- a/just_audio/example/ios/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/just_audio/example/ios/Flutter/AppFrameworkInfo.plist b/just_audio/example/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 6b4c0f7..0000000 --- a/just_audio/example/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 8.0 - - diff --git a/just_audio/example/ios/Flutter/Debug.xcconfig b/just_audio/example/ios/Flutter/Debug.xcconfig deleted file mode 100644 index e8efba1..0000000 --- a/just_audio/example/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/just_audio/example/ios/Flutter/Release.xcconfig b/just_audio/example/ios/Flutter/Release.xcconfig deleted file mode 100644 index 399e934..0000000 --- a/just_audio/example/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/just_audio/example/ios/Podfile b/just_audio/example/ios/Podfile deleted file mode 100644 index f7d6a5e..0000000 --- a/just_audio/example/ios/Podfile +++ /dev/null @@ -1,38 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '9.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/just_audio/example/ios/Podfile.lock b/just_audio/example/ios/Podfile.lock deleted file mode 100644 index af27c5e..0000000 --- a/just_audio/example/ios/Podfile.lock +++ /dev/null @@ -1,34 +0,0 @@ -PODS: - - audio_session (0.0.1): - - Flutter - - Flutter (1.0.0) - - just_audio (0.0.1): - - Flutter - - path_provider (0.0.1): - - Flutter - -DEPENDENCIES: - - audio_session (from `.symlinks/plugins/audio_session/ios`) - - Flutter (from `Flutter`) - - just_audio (from `.symlinks/plugins/just_audio/ios`) - - path_provider (from `.symlinks/plugins/path_provider/ios`) - -EXTERNAL SOURCES: - audio_session: - :path: ".symlinks/plugins/audio_session/ios" - Flutter: - :path: Flutter - just_audio: - :path: ".symlinks/plugins/just_audio/ios" - path_provider: - :path: ".symlinks/plugins/path_provider/ios" - -SPEC CHECKSUMS: - audio_session: 4f3e461722055d21515cf3261b64c973c062f345 - Flutter: 0e3d915762c693b495b44d77113d4970485de6ec - just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa - path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c - -PODFILE CHECKSUM: 8e679eca47255a8ca8067c4c67aab20e64cb974d - -COCOAPODS: 1.9.3 diff --git a/just_audio/example/ios/Runner.xcodeproj/project.pbxproj b/just_audio/example/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 442406c..0000000 --- a/just_audio/example/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,564 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; - 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - D06FA586B72D3A4E8145F7B3 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C5F18129E1310C9DA1B65F44 /* libPods-Runner.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2920064AACAD73E894573C6E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 936C8FBACDB1725D477088CC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C5F18129E1310C9DA1B65F44 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - EEEB488F061389F2C0725BDD /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D06FA586B72D3A4E8145F7B3 /* libPods-Runner.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1E7998A536E2BAD21DDFF12E /* Frameworks */ = { - isa = PBXGroup; - children = ( - C5F18129E1310C9DA1B65F44 /* libPods-Runner.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - A27F1C3EF07264C52FFA0B86 /* Pods */, - 1E7998A536E2BAD21DDFF12E /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 97C146F11CF9000F007C117D /* Supporting Files */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - ); - path = Runner; - sourceTree = ""; - }; - 97C146F11CF9000F007C117D /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 97C146F21CF9000F007C117D /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - A27F1C3EF07264C52FFA0B86 /* Pods */ = { - isa = PBXGroup; - children = ( - EEEB488F061389F2C0725BDD /* Pods-Runner.debug.xcconfig */, - 2920064AACAD73E894573C6E /* Pods-Runner.release.xcconfig */, - 936C8FBACDB1725D477088CC /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 3D5B4DF09BB47DFA6E4B8495 /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - A38593E728AFE0DAE382B1D1 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = "The Chromium Authors"; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 3D5B4DF09BB47DFA6E4B8495 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; - A38593E728AFE0DAE382B1D1 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${PODS_ROOT}/../Flutter/Flutter.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, - 97C146F31CF9000F007C117D /* main.m in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.ryanheise.audioPlayerExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.ryanheise.audioPlayerExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.ryanheise.audioPlayerExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a1..0000000 --- a/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/just_audio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/just_audio/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/just_audio/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index a28140c..0000000 --- a/just_audio/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/just_audio/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/just_audio/example/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc1..0000000 --- a/just_audio/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/just_audio/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/just_audio/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/just_audio/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/just_audio/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/just_audio/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/just_audio/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/just_audio/example/ios/Runner/AppDelegate.h b/just_audio/example/ios/Runner/AppDelegate.h deleted file mode 100644 index 36e21bb..0000000 --- a/just_audio/example/ios/Runner/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : FlutterAppDelegate - -@end diff --git a/just_audio/example/ios/Runner/AppDelegate.m b/just_audio/example/ios/Runner/AppDelegate.m deleted file mode 100644 index 59a72e9..0000000 --- a/just_audio/example/ios/Runner/AppDelegate.m +++ /dev/null @@ -1,13 +0,0 @@ -#include "AppDelegate.h" -#include "GeneratedPluginRegistrant.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application - didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [GeneratedPluginRegistrant registerWithRegistry:self]; - // Override point for customization after application launch. - return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} - -@end diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fa..0000000 --- a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 28c6bf0..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 2ccbfd9..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4cde121..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index dcdc230..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 2ccbfd9..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b86..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b86..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d16..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 6a84f41..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index d0e1f58..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2..0000000 --- a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725..0000000 --- a/just_audio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/just_audio/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/just_audio/example/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c..0000000 --- a/just_audio/example/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/just_audio/example/ios/Runner/Base.lproj/Main.storyboard b/just_audio/example/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c2851..0000000 --- a/just_audio/example/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/just_audio/example/ios/Runner/Info.plist b/just_audio/example/ios/Runner/Info.plist deleted file mode 100644 index 9324af6..0000000 --- a/just_audio/example/ios/Runner/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - just_audio_example - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/just_audio/example/ios/Runner/main.m b/just_audio/example/ios/Runner/main.m deleted file mode 100644 index dff6597..0000000 --- a/just_audio/example/ios/Runner/main.m +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import -#import "AppDelegate.h" - -int main(int argc, char* argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/just_audio/example/lib/main.dart b/just_audio/example/lib/main.dart deleted file mode 100644 index e1f5a4e..0000000 --- a/just_audio/example/lib/main.dart +++ /dev/null @@ -1,430 +0,0 @@ -import 'dart:math'; - -import 'package:audio_session/audio_session.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:just_audio/just_audio.dart'; - -void main() => runApp(MyApp()); - -class MyApp extends StatefulWidget { - @override - _MyAppState createState() => _MyAppState(); -} - -class _MyAppState extends State { - AudioPlayer _player; - ConcatenatingAudioSource _playlist = ConcatenatingAudioSource(children: [ - LoopingAudioSource( - count: 2, - child: ClippingAudioSource( - start: Duration(seconds: 60), - end: Duration(seconds: 65), - child: AudioSource.uri(Uri.parse( - "https://s3.amazonaws.com/scifri-episodes/scifri20181123-episode.mp3")), - tag: AudioMetadata( - album: "Science Friday", - title: "A Salute To Head-Scratching Science (5 seconds)", - artwork: - "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg", - ), - ), - ), - AudioSource.uri( - Uri.parse( - "https://s3.amazonaws.com/scifri-episodes/scifri20181123-episode.mp3"), - tag: AudioMetadata( - album: "Science Friday", - title: "A Salute To Head-Scratching Science", - artwork: - "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg", - ), - ), - AudioSource.uri( - Uri.parse("https://s3.amazonaws.com/scifri-segments/scifri201711241.mp3"), - tag: AudioMetadata( - album: "Science Friday", - title: "From Cat Rheology To Operatic Incompetence", - artwork: - "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg", - ), - ), - ]); - - @override - void initState() { - super.initState(); - _player = AudioPlayer(); - SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( - statusBarColor: Colors.black, - )); - _init(); - } - - _init() async { - final session = await AudioSession.instance; - await session.configure(AudioSessionConfiguration.speech()); - try { - await _player.setAudioSource(_playlist); - } catch (e) { - // catch load errors: 404, invalid url ... - print("An error occured $e"); - } - } - - @override - void dispose() { - _player.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - home: Scaffold( - body: SafeArea( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: StreamBuilder( - stream: _player.sequenceStateStream, - builder: (context, snapshot) { - final state = snapshot.data; - if (state?.sequence?.isEmpty ?? true) return SizedBox(); - final metadata = state.currentSource.tag as AudioMetadata; - return Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: - Center(child: Image.network(metadata.artwork)), - ), - ), - Text(metadata.album ?? '', - style: Theme.of(context).textTheme.headline6), - Text(metadata.title ?? ''), - ], - ); - }, - ), - ), - ControlButtons(_player), - StreamBuilder( - stream: _player.durationStream, - builder: (context, snapshot) { - final duration = snapshot.data ?? Duration.zero; - return StreamBuilder( - stream: _player.positionStream, - builder: (context, snapshot) { - var position = snapshot.data ?? Duration.zero; - if (position > duration) { - position = duration; - } - return SeekBar( - duration: duration, - position: position, - onChangeEnd: (newPosition) { - _player.seek(newPosition); - }, - ); - }, - ); - }, - ), - SizedBox(height: 8.0), - Row( - children: [ - StreamBuilder( - stream: _player.loopModeStream, - builder: (context, snapshot) { - final loopMode = snapshot.data ?? LoopMode.off; - const icons = [ - Icon(Icons.repeat, color: Colors.grey), - Icon(Icons.repeat, color: Colors.orange), - Icon(Icons.repeat_one, color: Colors.orange), - ]; - const cycleModes = [ - LoopMode.off, - LoopMode.all, - LoopMode.one, - ]; - final index = cycleModes.indexOf(loopMode); - return IconButton( - icon: icons[index], - onPressed: () { - _player.setLoopMode(cycleModes[ - (cycleModes.indexOf(loopMode) + 1) % - cycleModes.length]); - }, - ); - }, - ), - Expanded( - child: Text( - "Playlist", - style: Theme.of(context).textTheme.headline6, - textAlign: TextAlign.center, - ), - ), - StreamBuilder( - stream: _player.shuffleModeEnabledStream, - builder: (context, snapshot) { - final shuffleModeEnabled = snapshot.data ?? false; - return IconButton( - icon: shuffleModeEnabled - ? Icon(Icons.shuffle, color: Colors.orange) - : Icon(Icons.shuffle, color: Colors.grey), - onPressed: () async { - final enable = !shuffleModeEnabled; - if (enable) { - await _player.shuffle(); - } - await _player.setShuffleModeEnabled(enable); - }, - ); - }, - ), - ], - ), - Container( - height: 240.0, - child: StreamBuilder( - stream: _player.sequenceStateStream, - builder: (context, snapshot) { - final state = snapshot.data; - final sequence = state?.sequence ?? []; - return ListView.builder( - itemCount: sequence.length, - itemBuilder: (context, index) => Material( - color: index == state.currentIndex - ? Colors.grey.shade300 - : null, - child: ListTile( - title: Text(sequence[index].tag.title), - onTap: () { - _player.seek(Duration.zero, index: index); - }, - ), - ), - ); - }, - ), - ), - ], - ), - ), - ), - ); - } -} - -class ControlButtons extends StatelessWidget { - final AudioPlayer player; - - ControlButtons(this.player); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon(Icons.volume_up), - onPressed: () { - _showSliderDialog( - context: context, - title: "Adjust volume", - divisions: 10, - min: 0.0, - max: 1.0, - stream: player.volumeStream, - onChanged: player.setVolume, - ); - }, - ), - StreamBuilder( - stream: player.sequenceStateStream, - builder: (context, snapshot) => IconButton( - icon: Icon(Icons.skip_previous), - onPressed: player.hasPrevious ? player.seekToPrevious : null, - ), - ), - 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 Container( - margin: EdgeInsets.all(8.0), - width: 64.0, - height: 64.0, - child: CircularProgressIndicator(), - ); - } else if (playing != true) { - return IconButton( - icon: Icon(Icons.play_arrow), - iconSize: 64.0, - onPressed: player.play, - ); - } else if (processingState != ProcessingState.completed) { - return IconButton( - icon: Icon(Icons.pause), - iconSize: 64.0, - onPressed: player.pause, - ); - } else { - return IconButton( - icon: Icon(Icons.replay), - iconSize: 64.0, - onPressed: () => player.seek(Duration.zero, - index: player.effectiveIndices.first), - ); - } - }, - ), - StreamBuilder( - stream: player.sequenceStateStream, - builder: (context, snapshot) => IconButton( - icon: Icon(Icons.skip_next), - onPressed: player.hasNext ? player.seekToNext : null, - ), - ), - StreamBuilder( - stream: player.speedStream, - builder: (context, snapshot) => IconButton( - icon: Text("${snapshot.data?.toStringAsFixed(1)}x", - style: TextStyle(fontWeight: FontWeight.bold)), - onPressed: () { - _showSliderDialog( - context: context, - title: "Adjust speed", - divisions: 10, - min: 0.5, - max: 1.5, - stream: player.speedStream, - onChanged: player.setSpeed, - ); - }, - ), - ), - ], - ); - } -} - -class SeekBar extends StatefulWidget { - final Duration duration; - final Duration position; - final ValueChanged onChanged; - final ValueChanged onChangeEnd; - - SeekBar({ - @required this.duration, - @required this.position, - this.onChanged, - this.onChangeEnd, - }); - - @override - _SeekBarState createState() => _SeekBarState(); -} - -class _SeekBarState extends State { - double _dragValue; - - @override - Widget build(BuildContext context) { - return Stack( - children: [ - Slider( - min: 0.0, - max: widget.duration.inMilliseconds.toDouble(), - value: min(_dragValue ?? widget.position.inMilliseconds.toDouble(), - widget.duration.inMilliseconds.toDouble()), - onChanged: (value) { - setState(() { - _dragValue = value; - }); - if (widget.onChanged != null) { - widget.onChanged(Duration(milliseconds: value.round())); - } - }, - onChangeEnd: (value) { - if (widget.onChangeEnd != null) { - widget.onChangeEnd(Duration(milliseconds: value.round())); - } - _dragValue = null; - }, - ), - Positioned( - right: 16.0, - bottom: 0.0, - child: Text( - RegExp(r'((^0*[1-9]\d*:)?\d{2}:\d{2})\.\d+$') - .firstMatch("$_remaining") - ?.group(1) ?? - '$_remaining', - style: Theme.of(context).textTheme.caption), - ), - ], - ); - } - - Duration get _remaining => widget.duration - widget.position; -} - -_showSliderDialog({ - BuildContext context, - String title, - int divisions, - double min, - double max, - String valueSuffix = '', - Stream stream, - ValueChanged onChanged, -}) { - showDialog( - context: context, - builder: (context) => AlertDialog( - title: Text(title, textAlign: TextAlign.center), - content: StreamBuilder( - stream: stream, - builder: (context, snapshot) => Container( - height: 100.0, - child: Column( - children: [ - Text('${snapshot.data?.toStringAsFixed(1)}$valueSuffix', - style: TextStyle( - fontFamily: 'Fixed', - fontWeight: FontWeight.bold, - fontSize: 24.0)), - Slider( - divisions: divisions, - min: min, - max: max, - value: snapshot.data ?? 1.0, - onChanged: onChanged, - ), - ], - ), - ), - ), - ), - ); -} - -class AudioMetadata { - final String album; - final String title; - final String artwork; - - AudioMetadata({this.album, this.title, this.artwork}); -} diff --git a/just_audio/example/macos/.gitignore b/just_audio/example/macos/.gitignore deleted file mode 100644 index d2fd377..0000000 --- a/just_audio/example/macos/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/xcuserdata/ diff --git a/just_audio/example/macos/Flutter/Flutter-Debug.xcconfig b/just_audio/example/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 785633d..0000000 --- a/just_audio/example/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/just_audio/example/macos/Flutter/Flutter-Release.xcconfig b/just_audio/example/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5fba960..0000000 --- a/just_audio/example/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/just_audio/example/macos/Flutter/GeneratedPluginRegistrant.swift b/just_audio/example/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index c891b67..0000000 --- a/just_audio/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import audio_session -import just_audio -import path_provider_macos - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) - JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) - PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) -} diff --git a/just_audio/example/macos/Podfile b/just_audio/example/macos/Podfile deleted file mode 100644 index d60ec71..0000000 --- a/just_audio/example/macos/Podfile +++ /dev/null @@ -1,82 +0,0 @@ -platform :osx, '10.11' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def parse_KV_file(file, separator='=') - file_abs_path = File.expand_path(file) - if !File.exists? file_abs_path - return []; - end - pods_ary = [] - skip_line_start_symbols = ["#", "/"] - File.foreach(file_abs_path) { |line| - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } - plugin = line.split(pattern=separator) - if plugin.length == 2 - podname = plugin[0].strip() - path = plugin[1].strip() - podpath = File.expand_path("#{path}", file_abs_path) - pods_ary.push({:name => podname, :path => podpath}); - else - puts "Invalid plugin specification: #{line}" - end - } - return pods_ary -end - -def pubspec_supports_macos(file) - file_abs_path = File.expand_path(file) - if !File.exists? file_abs_path - return false; - end - File.foreach(file_abs_path) { |line| - return true if line =~ /^\s*macos:/ - } - return false -end - -target 'Runner' do - use_frameworks! - use_modular_headers! - - # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock - # referring to absolute paths on developers' machines. - ephemeral_dir = File.join('Flutter', 'ephemeral') - symlink_dir = File.join(ephemeral_dir, '.symlinks') - symlink_plugins_dir = File.join(symlink_dir, 'plugins') - system("rm -rf #{symlink_dir}") - system("mkdir -p #{symlink_plugins_dir}") - - # Flutter Pods - generated_xcconfig = parse_KV_file(File.join(ephemeral_dir, 'Flutter-Generated.xcconfig')) - if generated_xcconfig.empty? - puts "Flutter-Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." - end - generated_xcconfig.map { |p| - if p[:name] == 'FLUTTER_FRAMEWORK_DIR' - symlink = File.join(symlink_dir, 'flutter') - File.symlink(File.dirname(p[:path]), symlink) - pod 'FlutterMacOS', :path => File.join(symlink, File.basename(p[:path])) - end - } - - # Plugin Pods - plugin_pods = parse_KV_file('../.flutter-plugins') - plugin_pods.map { |p| - symlink = File.join(symlink_plugins_dir, p[:name]) - File.symlink(p[:path], symlink) - if pubspec_supports_macos(File.join(symlink, 'pubspec.yaml')) - pod p[:name], :path => File.join(symlink, 'macos') - end - } -end - -# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. -install! 'cocoapods', :disable_input_output_paths => true diff --git a/just_audio/example/macos/Podfile.lock b/just_audio/example/macos/Podfile.lock deleted file mode 100644 index f7d68bc..0000000 --- a/just_audio/example/macos/Podfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PODS: - - audio_session (0.0.1): - - FlutterMacOS - - FlutterMacOS (1.0.0) - - just_audio (0.0.1): - - FlutterMacOS - - path_provider (0.0.1) - - path_provider_macos (0.0.1): - - FlutterMacOS - -DEPENDENCIES: - - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) - - FlutterMacOS (from `Flutter/ephemeral/.symlinks/flutter/darwin-x64`) - - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`) - - path_provider (from `Flutter/ephemeral/.symlinks/plugins/path_provider/macos`) - - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) - -EXTERNAL SOURCES: - audio_session: - :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos - FlutterMacOS: - :path: Flutter/ephemeral/.symlinks/flutter/darwin-x64 - just_audio: - :path: Flutter/ephemeral/.symlinks/plugins/just_audio/macos - path_provider: - :path: Flutter/ephemeral/.symlinks/plugins/path_provider/macos - path_provider_macos: - :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos - -SPEC CHECKSUMS: - audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72 - FlutterMacOS: 15bea8a44d2fa024068daa0140371c020b4b6ff9 - just_audio: 1a11463e7e522bd4e8caa925b4247f1360cbe5a2 - path_provider: e0848572d1d38b9a7dd099e79cf83f5b7e2cde9f - path_provider_macos: a0a3fd666cb7cd0448e936fb4abad4052961002b - -PODFILE CHECKSUM: d8ba9b3e9e93c62c74a660b46c6fcb09f03991a7 - -COCOAPODS: 1.9.3 diff --git a/just_audio/example/macos/Runner.xcodeproj/project.pbxproj b/just_audio/example/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 8523899..0000000 --- a/just_audio/example/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,654 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 1BEEF829E111499DFFB9AFA4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77D68B92366F60419FE029D8 /* Pods_Runner.framework */; }; - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; }; - 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - D73912F022F37F9E000D13A0 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; }; - D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */, - 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */, - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FlutterMacOS.framework; path = Flutter/ephemeral/FlutterMacOS.framework; sourceTree = SOURCE_ROOT; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 409BAEF54B9B17B5585F3A06 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 77D68B92366F60419FE029D8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9C700360F2F4515FF4E74F2B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - D73912EF22F37F9E000D13A0 /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/ephemeral/App.framework; sourceTree = SOURCE_ROOT; }; - DA266879E6DA6E3956F07D12 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D73912F022F37F9E000D13A0 /* App.framework in Frameworks */, - 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */, - 1BEEF829E111499DFFB9AFA4 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - B89C79F942A13E07457B4DD9 /* Pods */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* example.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - D73912EF22F37F9E000D13A0 /* App.framework */, - 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - B89C79F942A13E07457B4DD9 /* Pods */ = { - isa = PBXGroup; - children = ( - 409BAEF54B9B17B5585F3A06 /* Pods-Runner.debug.xcconfig */, - DA266879E6DA6E3956F07D12 /* Pods-Runner.release.xcconfig */, - 9C700360F2F4515FF4E74F2B /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 77D68B92366F60419FE029D8 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 2E7987DC1DC14DA8A4B13BF3 /* [CP] Check Pods Manifest.lock */, - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - 31D443903C4E40636BA59DB3 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* example.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; - ORGANIZATIONNAME = "The Flutter Authors"; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 2E7987DC1DC14DA8A4B13BF3 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 31D443903C4E40636BA59DB3 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh\ntouch Flutter/ephemeral/tripwire\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter/ephemeral", - ); - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter/ephemeral", - ); - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter/ephemeral", - ); - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/just_audio/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/just_audio/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/just_audio/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/just_audio/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/just_audio/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index df12c33..0000000 --- a/just_audio/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/just_audio/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/just_audio/example/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc1..0000000 --- a/just_audio/example/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/just_audio/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/just_audio/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/just_audio/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/just_audio/example/macos/Runner/AppDelegate.swift b/just_audio/example/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef64..0000000 --- a/just_audio/example/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f..0000000 --- a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 3c4935a..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index ed4cc16..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 483be61..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bcbf36d..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index 9c0a652..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index e71a726..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 8a31fe2..0000000 Binary files a/just_audio/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/just_audio/example/macos/Runner/Base.lproj/MainMenu.xib b/just_audio/example/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 537341a..0000000 --- a/just_audio/example/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/just_audio/example/macos/Runner/Configs/AppInfo.xcconfig b/just_audio/example/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index ff69002..0000000 --- a/just_audio/example/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = example - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.ryanheise.example - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2020 com.ryanheise. All rights reserved. diff --git a/just_audio/example/macos/Runner/Configs/Debug.xcconfig b/just_audio/example/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd9..0000000 --- a/just_audio/example/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/just_audio/example/macos/Runner/Configs/Release.xcconfig b/just_audio/example/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f49..0000000 --- a/just_audio/example/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/just_audio/example/macos/Runner/Configs/Warnings.xcconfig b/just_audio/example/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf4..0000000 --- a/just_audio/example/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/just_audio/example/macos/Runner/DebugProfile.entitlements b/just_audio/example/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index 08c3ab1..0000000 --- a/just_audio/example/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,14 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - com.apple.security.network.client - - - diff --git a/just_audio/example/macos/Runner/Info.plist b/just_audio/example/macos/Runner/Info.plist deleted file mode 100644 index 4789daa..0000000 --- a/just_audio/example/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/just_audio/example/macos/Runner/MainFlutterWindow.swift b/just_audio/example/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837..0000000 --- a/just_audio/example/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/just_audio/example/macos/Runner/Release.entitlements b/just_audio/example/macos/Runner/Release.entitlements deleted file mode 100644 index ee95ab7..0000000 --- a/just_audio/example/macos/Runner/Release.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.network.client - - - diff --git a/just_audio/example/pubspec.lock b/just_audio/example/pubspec.lock deleted file mode 100644 index 5ff5d96..0000000 --- a/just_audio/example/pubspec.lock +++ /dev/null @@ -1,306 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.5.0-nullsafety.1" - audio_session: - dependency: "direct main" - description: - name: audio_session - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.10" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0-nullsafety.1" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0-nullsafety.3" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0-nullsafety.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0-nullsafety.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.15.0-nullsafety.3" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.5" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.3" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0-nullsafety.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.3" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "5.2.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - intl: - dependency: transitive - description: - name: intl - url: "https://pub.dartlang.org" - source: hosted - version: "0.16.1" - just_audio: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.6.5" - just_audio_platform_interface: - dependency: transitive - description: - path: "../../just_audio_platform_interface" - relative: true - source: path - version: "2.0.0" - just_audio_web: - dependency: transitive - description: - path: "../../just_audio_web" - relative: true - source: path - version: "0.2.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.10-nullsafety.1" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0-nullsafety.3" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0-nullsafety.1" - path_provider: - dependency: transitive - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.18" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.1+2" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.4+4" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.4+1" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.1" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.13" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.24.1" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0-nullsafety.2" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0-nullsafety.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0-nullsafety.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0-nullsafety.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0-nullsafety.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.19-nullsafety.2" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0-nullsafety.3" - uuid: - dependency: transitive - description: - name: uuid - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.2" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0-nullsafety.3" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "1.7.3" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.2" -sdks: - dart: ">=2.10.0-110 <2.11.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/just_audio/example/pubspec.yaml b/just_audio/example/pubspec.yaml deleted file mode 100644 index 090431f..0000000 --- a/just_audio/example/pubspec.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: just_audio_example -description: Demonstrates how to use the just_audio plugin. -publish_to: 'none' - -environment: - sdk: ">=2.7.0 <3.0.0" - -dependencies: - flutter: - sdk: flutter - audio_session: ^0.0.10 - just_audio: - path: ../ - - cupertino_icons: ^0.1.2 - -dev_dependencies: - flutter_test: - sdk: flutter - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter. -flutter: - - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware. - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages diff --git a/just_audio/example/test/widget_test.dart b/just_audio/example/test/widget_test.dart deleted file mode 100644 index 0cc2e4f..0000000 --- a/just_audio/example/test/widget_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility that Flutter provides. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:just_audio_example/main.dart'; - -void main() { - testWidgets('Verify Platform version', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); - - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => widget is Text && - widget.data.startsWith('Running on:'), - ), - findsOneWidget, - ); - }); -} diff --git a/just_audio/example/web/favicon.png b/just_audio/example/web/favicon.png deleted file mode 100644 index 8aaa46a..0000000 Binary files a/just_audio/example/web/favicon.png and /dev/null differ diff --git a/just_audio/example/web/icons/Icon-192.png b/just_audio/example/web/icons/Icon-192.png deleted file mode 100644 index b749bfe..0000000 Binary files a/just_audio/example/web/icons/Icon-192.png and /dev/null differ diff --git a/just_audio/example/web/icons/Icon-512.png b/just_audio/example/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48..0000000 Binary files a/just_audio/example/web/icons/Icon-512.png and /dev/null differ diff --git a/just_audio/example/web/index.html b/just_audio/example/web/index.html deleted file mode 100644 index 9b7a438..0000000 --- a/just_audio/example/web/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - example - - - - - - - - diff --git a/just_audio/example/web/manifest.json b/just_audio/example/web/manifest.json deleted file mode 100644 index 8c01291..0000000 --- a/just_audio/example/web/manifest.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "example", - "short_name": "example", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/just_audio/pubspec.lock b/just_audio/pubspec.lock index 67960f5..2ad6c29 100644 --- a/just_audio/pubspec.lock +++ b/just_audio/pubspec.lock @@ -28,7 +28,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0-nullsafety.1" + version: "2.5.0" audio_session: dependency: "direct main" description: @@ -42,7 +42,7 @@ packages: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" build: dependency: transitive description: @@ -70,14 +70,14 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" cli_util: dependency: transitive description: @@ -91,7 +91,7 @@ packages: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" code_builder: dependency: transitive description: @@ -105,7 +105,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0-nullsafety.3" + version: "1.15.0" convert: dependency: transitive description: @@ -133,7 +133,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" ffi: dependency: transitive description: @@ -190,7 +190,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.2" + version: "0.6.3" just_audio_platform_interface: dependency: "direct main" description: @@ -218,14 +218,14 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10-nullsafety.1" + version: "0.12.10" meta: dependency: "direct main" description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" mockito: dependency: "direct dev" description: @@ -260,7 +260,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.1" + version: "1.8.0" path_provider: dependency: "direct main" description: @@ -363,49 +363,49 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.2" + version: "1.8.0" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.1" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19-nullsafety.2" + version: "0.2.19" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" uuid: dependency: "direct main" description: @@ -419,7 +419,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" + version: "2.1.0" watcher: dependency: transitive description: @@ -449,5 +449,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.0 <2.11.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/just_audio/test/just_audio_test.dart b/just_audio/test/just_audio_test.dart deleted file mode 100644 index 6be1465..0000000 --- a/just_audio/test/just_audio_test.dart +++ /dev/null @@ -1,1013 +0,0 @@ -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'dart:math'; -import 'dart:typed_data'; - -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:just_audio/just_audio.dart'; -import 'package:just_audio_platform_interface/just_audio_platform_interface.dart'; -import 'package:mockito/mockito.dart'; -import 'package:plugin_platform_interface/plugin_platform_interface.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - // We need an actual HttpClient to test the proxy server. - final overrides = MyHttpOverrides(); - HttpOverrides.global = overrides; - HttpOverrides.runWithHttpOverrides(runTests, overrides); -} - -void runTests() { - final mock = MockJustAudio(); - JustAudioPlatform.instance = mock; - final audioSessionChannel = MethodChannel('com.ryanheise.audio_session'); - - void expectDuration(Duration a, Duration b, {int epsilon = 200}) { - expect((a - b).inMilliseconds.abs(), lessThanOrEqualTo(epsilon)); - } - - void expectState({ - AudioPlayer player, - Duration position, - ProcessingState processingState, - bool playing, - }) { - if (position != null) { - expectDuration(player.position, position); - } - if (processingState != null) { - expect(player.processingState, equals(processingState)); - } - if (playing != null) { - expect(player.playing, equals(playing)); - } - } - - void checkIndices(List indices, int length) { - expect(indices.length, length); - final sorted = List.of(indices)..sort(); - expect(sorted, equals(List.generate(indices.length, (i) => i))); - } - - setUp(() { - audioSessionChannel.setMockMethodCallHandler((MethodCall methodCall) async { - return null; - }); - }); - - tearDown(() { - audioSessionChannel.setMockMethodCallHandler(null); - }); - - test('init', () async { - final player = AudioPlayer(); - expect(player.processingState, equals(ProcessingState.idle)); - expect(player.position, equals(Duration.zero)); - //expect(player.bufferedPosition, equals(Duration.zero)); - expect(player.duration, equals(null)); - expect(player.icyMetadata, equals(null)); - expect(player.currentIndex, equals(null)); - expect(player.androidAudioSessionId, equals(null)); - expect(player.playing, equals(false)); - expect(player.volume, equals(1.0)); - expect(player.speed, equals(1.0)); - expect(player.sequence, equals(null)); - expect(player.hasNext, equals(false)); - expect(player.hasPrevious, equals(false)); - //expect(player.loopMode, equals(LoopMode.off)); - //expect(player.shuffleModeEnabled, equals(false)); - expect(player.automaticallyWaitsToMinimizeStalling, equals(true)); - player.dispose(); - }); - - test('load', () async { - final player = AudioPlayer(); - final duration = await player.setUrl('https://foo.foo/foo.mp3'); - expect(duration, equals(audioSourceDuration)); - expect(player.duration, equals(duration)); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.position, equals(Duration.zero)); - expect(player.currentIndex, equals(0)); - expect(player.hasNext, equals(false)); - expect(player.hasPrevious, equals(false)); - expect(player.sequence.length, equals(1)); - expect(player.playing, equals(false)); - player.dispose(); - }); - - test('load error', () async { - final player = AudioPlayer(); - var exception; - try { - await player.setUrl('https://foo.foo/404.mp3'); - exception = null; - } catch (e) { - exception = e; - } - expect(exception != null, equals(true)); - try { - await player.setUrl('https://foo.foo/abort.mp3'); - exception = null; - } catch (e) { - exception = e; - } - expect(exception != null, equals(true)); - try { - await player.setUrl('https://foo.foo/error.mp3'); - exception = null; - } catch (e) { - exception = e; - } - expect(exception != null, equals(true)); - player.dispose(); - }); - - test('control', () async { - final player = AudioPlayer(); - final duration = await player.setUrl('https://foo.foo/foo.mp3'); - final point1 = duration * 0.3; - final stopwatch = Stopwatch(); - expectState( - player: player, - position: Duration.zero, - processingState: ProcessingState.ready, - playing: false, - ); - await player.seek(point1); - expectState( - player: player, - position: point1, - processingState: ProcessingState.ready, - playing: false, - ); - player.play(); - expectState( - player: player, - position: point1, - processingState: ProcessingState.ready, - ); - await Future.delayed(Duration(milliseconds: 100)); - expectState(player: player, playing: true); - await Future.delayed(Duration(seconds: 1)); - expectState( - player: player, - position: point1 + Duration(seconds: 1), - processingState: ProcessingState.ready, - playing: true, - ); - await player.seek(duration - Duration(seconds: 3)); - expectState( - player: player, - position: duration - Duration(seconds: 3), - processingState: ProcessingState.ready, - playing: true, - ); - await player.pause(); - expectState( - player: player, - position: duration - Duration(seconds: 3), - processingState: ProcessingState.ready, - playing: false, - ); - stopwatch.reset(); - stopwatch.start(); - final playFuture = player.play(); - expectState( - player: player, - position: duration - Duration(seconds: 3), - processingState: ProcessingState.ready, - ); - expectState(player: player, playing: true); - await playFuture; - expectDuration(stopwatch.elapsed, Duration(seconds: 3)); - expectState( - player: player, - position: duration, - processingState: ProcessingState.completed, - playing: true, - ); - player.dispose(); - }); - - test('speed', () async { - final player = AudioPlayer(); - final duration = await player.setUrl('https://foo.foo/foo.mp3'); - final period1 = Duration(seconds: 2); - final period2 = Duration(seconds: 2); - final speed1 = 0.75; - final speed2 = 1.5; - final position1 = period1 * speed1; - final position2 = position1 + period2 * speed2; - expectState(player: player, position: Duration.zero); - await player.setSpeed(speed1); - player.play(); - await Future.delayed(period1); - expectState(player: player, position: position1); - await player.setSpeed(speed2); - await Future.delayed(period2); - expectState(player: player, position: position2); - player.dispose(); - }); - - test('positionStream', () async { - final player = AudioPlayer(); - final duration = await player.setUrl('https://foo.foo/foo.mp3'); - final period = Duration(seconds: 3); - final position1 = period; - final position2 = position1 + period; - final speed1 = 0.75; - final speed2 = 1.5; - final stepDuration = period ~/ 5; - var target = stepDuration; - player.setSpeed(speed1); - player.play(); - final stopwatch = Stopwatch(); - stopwatch.start(); - - var completer = Completer(); - StreamSubscription subscription; - subscription = player.positionStream.listen((position) { - if (position >= position1) { - subscription.cancel(); - completer.complete(); - } else if (position >= target) { - expectDuration(position, stopwatch.elapsed * speed1); - target += stepDuration; - } - }); - await completer.future; - player.setSpeed(speed2); - stopwatch.reset(); - - target = position1 + target; - completer = Completer(); - subscription = player.positionStream.listen((position) { - if (position >= position2) { - subscription.cancel(); - completer.complete(); - } else if (position >= target) { - expectDuration(position, position1 + stopwatch.elapsed * speed2); - target += stepDuration; - } - }); - await completer.future; - player.dispose(); - }); - - test('icyMetadata', () async { - final player = AudioPlayer(); - expect(player.icyMetadata, equals(null)); - final duration = await player.setUrl('https://foo.foo/foo.mp3'); - player.play(); - expect(player.icyMetadata.headers.genre, equals(icyMetadata.headers.genre)); - expect((await player.icyMetadataStream.first).headers.genre, - equals(icyMetadata.headers.genre)); - player.dispose(); - }); - - test('proxy', () async { - final server = MockWebServer(); - await server.start(); - final player = AudioPlayer(); - // This simulates an actual URL - final uri = Uri.parse( - 'http://${InternetAddress.loopbackIPv4.address}:${server.port}/proxy/foo.mp3'); - await player.setUrl('$uri', headers: {'custom-header': 'Hello'}); - // Obtain the proxy URL that the platform side should use to load the data. - final proxyUri = Uri.parse(player.icyMetadata.info.url); - // Simulate the platform side requesting the data. - final request = await HttpClient().getUrl(proxyUri); - final response = await request.close(); - final responseText = await response.transform(utf8.decoder).join(); - expect(response.statusCode, equals(HttpStatus.ok)); - expect(responseText, equals('Hello')); - expect(response.headers.value(HttpHeaders.contentTypeHeader), - equals('audio/mock')); - await server.stop(); - }); - - test('proxy0.9', () async { - final server = MockWebServer(); - await server.start(); - final player = AudioPlayer(); - // This simulates an actual URL - final uri = Uri.parse( - 'http://${InternetAddress.loopbackIPv4.address}:${server.port}/proxy0.9/foo.mp3'); - await player.setUrl('$uri'); - // Obtain the proxy URL that the platform side should use to load the data. - final proxyUri = Uri.parse(player.icyMetadata.info.url); - // Simulate the platform side requesting the data. - final socket = await Socket.connect(proxyUri.host, proxyUri.port); - //final socket = await Socket.connect(uri.host, uri.port); - socket.write('GET ${uri.path} HTTP/1.0\n\n'); - await socket.flush(); - final responseText = await socket - .transform(Converter.castFrom, String, Uint8List, dynamic>( - utf8.decoder)) - .join(); - await socket.close(); - expect(responseText, equals('Hello')); - await server.stop(); - }); - - test('sequence', () async { - final source1 = ConcatenatingAudioSource(children: [ - LoopingAudioSource( - count: 2, - child: ClippingAudioSource( - start: Duration(seconds: 60), - end: Duration(seconds: 65), - child: AudioSource.uri(Uri.parse("https://foo.foo/foo.mp3")), - tag: 'a', - ), - ), - AudioSource.uri( - Uri.parse("https://bar.bar/bar.mp3"), - tag: 'b', - ), - AudioSource.uri( - Uri.parse("https://baz.baz/baz.mp3"), - tag: 'c', - ), - ]); - expect(source1.sequence.map((s) => s.tag as String).toList(), - equals(['a', 'a', 'b', 'c'])); - final source2 = ConcatenatingAudioSource(children: []); - final player = AudioPlayer(); - await player.setAudioSource(source2); - expect(source2.sequence.length, equals(0)); - await source2 - .add(AudioSource.uri(Uri.parse('https://b.b/b.mp3'), tag: 'b')); - await source2.insert( - 0, AudioSource.uri(Uri.parse('https://a.a/a.mp3'), tag: 'a')); - await source2.insert( - 2, AudioSource.uri(Uri.parse('https://c.c/c.mp3'), tag: 'c')); - await source2.addAll([ - AudioSource.uri(Uri.parse('https://d.d/d.mp3'), tag: 'd'), - AudioSource.uri(Uri.parse('https://e.e/e.mp3'), tag: 'e'), - ]); - await source2.insertAll(3, [ - AudioSource.uri(Uri.parse('https://e.e/e.mp3'), tag: 'e'), - AudioSource.uri(Uri.parse('https://f.f/f.mp3'), tag: 'f'), - ]); - expect(source2.sequence.map((s) => s.tag as String), - equals(['a', 'b', 'c', 'e', 'f', 'd', 'e'])); - await source2.removeAt(0); - expect(source2.sequence.map((s) => s.tag as String), - equals(['b', 'c', 'e', 'f', 'd', 'e'])); - await source2.move(3, 2); - expect(source2.sequence.map((s) => s.tag as String), - equals(['b', 'c', 'f', 'e', 'd', 'e'])); - await source2.move(2, 3); - expect(source2.sequence.map((s) => s.tag as String), - equals(['b', 'c', 'e', 'f', 'd', 'e'])); - await source2.removeRange(0, 2); - expect(source2.sequence.map((s) => s.tag as String), - equals(['e', 'f', 'd', 'e'])); - await source2.removeAt(3); - expect( - source2.sequence.map((s) => s.tag as String), equals(['e', 'f', 'd'])); - await source2.removeRange(1, 3); - expect(source2.sequence.map((s) => s.tag as String), equals(['e'])); - await source2.clear(); - expect(source2.sequence.map((s) => s.tag as String), equals([])); - }); - - test('detect', () async { - expect(AudioSource.uri(Uri.parse('https://a.a/a.mpd')) is DashAudioSource, - equals(true)); - expect(AudioSource.uri(Uri.parse('https://a.a/a.m3u8')) is HlsAudioSource, - equals(true)); - expect( - AudioSource.uri(Uri.parse('https://a.a/a.mp3')) - is ProgressiveAudioSource, - equals(true)); - expect(AudioSource.uri(Uri.parse('https://a.a/a#.mpd')) is DashAudioSource, - equals(true)); - }); - - test('shuffle order', () async { - final shuffleOrder1 = DefaultShuffleOrder(random: Random(1001)); - checkIndices(shuffleOrder1.indices, 0); - //expect(shuffleOrder1.indices, equals([])); - shuffleOrder1.insert(0, 5); - //expect(shuffleOrder1.indices, equals([3, 0, 2, 4, 1])); - checkIndices(shuffleOrder1.indices, 5); - shuffleOrder1.insert(3, 2); - checkIndices(shuffleOrder1.indices, 7); - shuffleOrder1.insert(0, 2); - checkIndices(shuffleOrder1.indices, 9); - shuffleOrder1.insert(9, 2); - checkIndices(shuffleOrder1.indices, 11); - - final indices1 = List.of(shuffleOrder1.indices); - shuffleOrder1.shuffle(); - expect(shuffleOrder1.indices, isNot(indices1)); - checkIndices(shuffleOrder1.indices, 11); - final indices2 = List.of(shuffleOrder1.indices); - shuffleOrder1.shuffle(initialIndex: 5); - expect(shuffleOrder1.indices[0], equals(5)); - expect(shuffleOrder1.indices, isNot(indices2)); - checkIndices(shuffleOrder1.indices, 11); - - shuffleOrder1.removeRange(4, 6); - checkIndices(shuffleOrder1.indices, 9); - shuffleOrder1.removeRange(0, 2); - checkIndices(shuffleOrder1.indices, 7); - shuffleOrder1.removeRange(5, 7); - checkIndices(shuffleOrder1.indices, 5); - shuffleOrder1.removeRange(0, 5); - checkIndices(shuffleOrder1.indices, 0); - - shuffleOrder1.insert(0, 5); - checkIndices(shuffleOrder1.indices, 5); - shuffleOrder1.clear(); - checkIndices(shuffleOrder1.indices, 0); - }); - - test('shuffle', () async { - AudioSource createSource() => ConcatenatingAudioSource( - shuffleOrder: DefaultShuffleOrder(random: Random(1001)), - children: [ - LoopingAudioSource( - count: 2, - child: ClippingAudioSource( - start: Duration(seconds: 60), - end: Duration(seconds: 65), - child: AudioSource.uri(Uri.parse("https://foo.foo/foo.mp3")), - tag: 'a', - ), - ), - AudioSource.uri( - Uri.parse("https://bar.bar/bar.mp3"), - tag: 'b', - ), - AudioSource.uri( - Uri.parse("https://baz.baz/baz.mp3"), - tag: 'c', - ), - ClippingAudioSource( - child: AudioSource.uri( - Uri.parse("https://baz.baz/baz.mp3"), - tag: 'd', - ), - ), - ], - ); - final source1 = createSource(); - //expect(source1.shuffleIndices, [4, 0, 1, 3, 2]); - checkIndices(source1.shuffleIndices, 5); - expect(source1.shuffleIndices.skipWhile((i) => i != 0).skip(1).first, - equals(1)); - final player1 = AudioPlayer(); - await player1.setAudioSource(source1); - checkIndices(player1.shuffleIndices, 5); - expect(player1.shuffleIndices.first, equals(0)); - await player1.seek(Duration.zero, index: 3); - await player1.shuffle(); - checkIndices(player1.shuffleIndices, 5); - expect(player1.shuffleIndices.first, equals(3)); - - final source2 = createSource(); - final player2 = AudioPlayer(); - await player2.setAudioSource(source2, initialIndex: 3); - checkIndices(player2.shuffleIndices, 5); - expect(player2.shuffleIndices.first, equals(3)); - }); - - test('stop', () async { - final source = ConcatenatingAudioSource( - shuffleOrder: DefaultShuffleOrder(random: Random(1001)), - children: [ - AudioSource.uri( - Uri.parse("https://bar.bar/foo.mp3"), - tag: 'foo', - ), - AudioSource.uri( - Uri.parse("https://baz.baz/bar.mp3"), - tag: 'bar', - ), - ], - ); - final player = AudioPlayer(); - expect(player.processingState, ProcessingState.idle); - await player.setAudioSource(source, preload: false); - expect(player.processingState, ProcessingState.idle); - await player.load(); - expect(player.processingState, ProcessingState.ready); - await player.seek(Duration(seconds: 5), index: 1); - await player.setVolume(0.5); - await player.setSpeed(0.7); - await player.setShuffleModeEnabled(true); - await player.setLoopMode(LoopMode.one); - await player.stop(); - expect(player.processingState, ProcessingState.idle); - expect(player.position, Duration(seconds: 5)); - expect(player.volume, 0.5); - expect(player.speed, 0.7); - expect(player.shuffleModeEnabled, true); - expect(player.loopMode, LoopMode.one); - await player.load(); - expect(player.processingState, ProcessingState.ready); - expect(player.position, Duration(seconds: 5)); - expect(player.volume, 0.5); - expect(player.speed, 0.7); - expect(player.shuffleModeEnabled, true); - expect(player.loopMode, LoopMode.one); - }); - - test('play-load', () async { - for (var delayMs in [0, 100]) { - final player = AudioPlayer(); - player.play(); - if (delayMs != 0) { - await Future.delayed(Duration(milliseconds: delayMs)); - } - expect(player.playing, equals(true)); - expect(player.processingState, equals(ProcessingState.idle)); - await player.setUrl('https://bar.bar/foo.mp3'); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration.zero); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - await player.dispose(); - } - }); - - test('play-set', () async { - for (var delayMs in [0, 100]) { - final player = AudioPlayer(); - player.play(); - if (delayMs != 0) { - await Future.delayed(Duration(milliseconds: delayMs)); - } - expect(player.playing, equals(true)); - expect(player.processingState, equals(ProcessingState.idle)); - await player.setUrl('https://bar.bar/foo.mp3', preload: false); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration.zero); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - await player.dispose(); - } - }); - - test('set-play', () async { - final player = AudioPlayer(); - await player.setUrl('https://bar.bar/foo.mp3', preload: false); - expect(player.processingState, equals(ProcessingState.idle)); - expect(player.playing, equals(false)); - player.play(); - expect(player.playing, equals(true)); - await player.processingStateStream - .firstWhere((state) => state == ProcessingState.ready); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration.zero); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - await player.dispose(); - }); - - test('set-set', () async { - final player = AudioPlayer(); - await player.setAudioSource( - ConcatenatingAudioSource( - children: [ - AudioSource.uri(Uri.parse('https://bar.bar/foo.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/bar.mp3')), - ], - ), - preload: false, - ); - expect(player.processingState, equals(ProcessingState.idle)); - expect(player.sequence.length, equals(2)); - expect(player.playing, equals(false)); - await player.setAudioSource( - ConcatenatingAudioSource( - children: [ - AudioSource.uri(Uri.parse('https://bar.bar/foo.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/bar.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/baz.mp3')), - ], - ), - preload: false, - ); - expect(player.processingState, equals(ProcessingState.idle)); - expect(player.sequence.length, equals(3)); - expect(player.playing, equals(false)); - await player.dispose(); - }); - - test('load-load', () async { - final player = AudioPlayer(); - await player.setAudioSource( - ConcatenatingAudioSource( - children: [ - AudioSource.uri(Uri.parse('https://bar.bar/foo.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/bar.mp3')), - ], - ), - ); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.sequence.length, equals(2)); - expect(player.playing, equals(false)); - await player.setAudioSource( - ConcatenatingAudioSource( - children: [ - AudioSource.uri(Uri.parse('https://bar.bar/foo.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/bar.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/baz.mp3')), - ], - ), - ); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.sequence.length, equals(3)); - expect(player.playing, equals(false)); - await player.dispose(); - }); - - test('load-set-load', () async { - final player = AudioPlayer(); - await player.setAudioSource( - ConcatenatingAudioSource( - children: [ - AudioSource.uri(Uri.parse('https://bar.bar/foo.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/bar.mp3')), - ], - ), - ); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.sequence.length, equals(2)); - expect(player.playing, equals(false)); - await player.setAudioSource( - ConcatenatingAudioSource( - children: [ - AudioSource.uri(Uri.parse('https://bar.bar/foo.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/bar.mp3')), - AudioSource.uri(Uri.parse('https://bar.bar/baz.mp3')), - ], - ), - preload: false, - ); - expect(player.processingState, equals(ProcessingState.idle)); - expect(player.sequence.length, equals(3)); - expect(player.playing, equals(false)); - await player.load(); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.sequence.length, equals(3)); - expect(player.playing, equals(false)); - await player.dispose(); - }); - - test('play-load-load', () async { - final player = AudioPlayer(); - player.play(); - await player.setUrl('https://bar.bar/foo.mp3'); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration(seconds: 0)); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - await player.setUrl('https://bar.bar/bar.mp3'); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration(seconds: 0)); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - await player.dispose(); - }); - - test('play-load-set-play-load', () async { - final player = AudioPlayer(); - player.play(); - await player.setUrl('https://bar.bar/foo.mp3'); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration(seconds: 0)); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - player.pause(); - expect(player.playing, equals(false)); - await player.setUrl('https://bar.bar/bar.mp3', preload: false); - expect(player.processingState, equals(ProcessingState.idle)); - expect(player.playing, equals(false)); - // TODO: Decide whether we want player.position to be null here. - expectDuration(player.position ?? Duration.zero, Duration.zero); - await player.load(); - expect(player.processingState, equals(ProcessingState.ready)); - expect(player.playing, equals(false)); - expectDuration(player.position, Duration(seconds: 0)); - player.play(); - expect(player.playing, equals(true)); - expectDuration(player.position, Duration(seconds: 0)); - await Future.delayed(Duration(seconds: 1)); - expectDuration(player.position, Duration(seconds: 1)); - await player.dispose(); - }); - - test('quick-reactivate', () async { - final player = AudioPlayer(); - await player.setUrl('https://bar.bar/foo.mp3'); - player.stop(); - await player.setUrl('https://bar.bar/foo.mp3'); - }); -} - -class MockJustAudio extends Mock - with MockPlatformInterfaceMixin - implements JustAudioPlatform { - final _players = {}; - - @override - Future init(InitRequest request) async { - if (_players.containsKey(request.id)) - throw PlatformException( - code: "error", - message: "Platform player ${request.id} already exists"); - final player = MockAudioPlayer(request.id); - _players[request.id] = player; - return player; - } - - @override - Future disposePlayer( - DisposePlayerRequest request) async { - _players[request.id].dispose(DisposeRequest()); - _players.remove(request.id); - return DisposePlayerResponse(); - } -} - -const audioSourceDuration = Duration(minutes: 2); - -final icyMetadata = IcyMetadata( - headers: IcyHeaders( - url: 'url', - genre: 'Genre', - metadataInterval: 3, - bitrate: 100, - isPublic: true, - name: 'name', - ), - info: IcyInfo( - title: 'title', - url: 'url', - ), -); - -final icyMetadataMessage = IcyMetadataMessage( - headers: IcyHeadersMessage( - url: 'url', - genre: 'Genre', - metadataInterval: 3, - bitrate: 100, - isPublic: true, - name: 'name', - ), - info: IcyInfoMessage( - title: 'title', - url: 'url', - ), -); - -class MockAudioPlayer implements AudioPlayerPlatform { - final String _id; - final eventController = StreamController(); - AudioSourceMessage _audioSource; - ProcessingStateMessage _processingState = ProcessingStateMessage.idle; - Duration _updatePosition = Duration.zero; - DateTime _updateTime = DateTime.now(); - Duration _duration = audioSourceDuration; - int _currentIndex; - int _index; - var _playing = false; - var _speed = 1.0; - var _volume = 1.0; - var _loopMode = LoopModeMessage.off; - var _shuffleModeEnabled = false; - Completer _playCompleter; - Timer _playTimer; - - MockAudioPlayer(String id) : this._id = id; - - @override - String get id => _id; - - @override - Stream get playbackEventMessageStream => - eventController.stream; - - @override - Future load(LoadRequest request) async { - final audioSource = request.audioSourceMessage; - if (audioSource is UriAudioSourceMessage) { - if (audioSource.uri.contains('abort')) { - throw PlatformException(code: 'abort', message: 'Failed to load URL'); - } else if (audioSource.uri.contains('404')) { - throw PlatformException(code: '404', message: 'Not found'); - } else if (audioSource.uri.contains('error')) { - throw PlatformException(code: 'error', message: 'Unknown error'); - } - } - _audioSource = audioSource; - _index = request.initialIndex ?? 0; - // Simulate loading time. - await Future.delayed(Duration(milliseconds: 100)); - _setPosition(request.initialPosition ?? Duration.zero); - _processingState = ProcessingStateMessage.ready; - _broadcastPlaybackEvent(); - return LoadResponse(duration: _duration); - } - - @override - Future play(PlayRequest request) async { - if (_playing) return PlayResponse(); - _playing = true; - _playTimer = Timer(_remaining, () { - _setPosition(_position); - _processingState = ProcessingStateMessage.completed; - _broadcastPlaybackEvent(); - _playCompleter?.complete(); - }); - _playCompleter = Completer(); - _broadcastPlaybackEvent(); - await _playCompleter.future; - return PlayResponse(); - } - - @override - Future pause(PauseRequest request) async { - if (!_playing) return PauseResponse(); - _playing = false; - _playTimer?.cancel(); - _playCompleter?.complete(); - _setPosition(_position); - _broadcastPlaybackEvent(); - return PauseResponse(); - } - - @override - Future seek(SeekRequest request) async { - _setPosition(request.position); - _index = request.index; - _broadcastPlaybackEvent(); - return SeekResponse(); - } - - @override - Future setAndroidAudioAttributes( - SetAndroidAudioAttributesRequest request) async { - return SetAndroidAudioAttributesResponse(); - } - - @override - Future - setAutomaticallyWaitsToMinimizeStalling( - SetAutomaticallyWaitsToMinimizeStallingRequest request) async { - return SetAutomaticallyWaitsToMinimizeStallingResponse(); - } - - @override - Future setLoopMode(SetLoopModeRequest request) async { - _loopMode = request.loopMode; - return SetLoopModeResponse(); - } - - @override - Future setShuffleMode( - SetShuffleModeRequest request) async { - _shuffleModeEnabled = request.shuffleMode == ShuffleModeMessage.all; - return SetShuffleModeResponse(); - } - - @override - Future setShuffleOrder( - SetShuffleOrderRequest request) async { - return SetShuffleOrderResponse(); - } - - @override - Future setSpeed(SetSpeedRequest request) async { - _speed = request.speed; - _setPosition(_position); - return SetSpeedResponse(); - } - - @override - Future setVolume(SetVolumeRequest request) async { - _volume = request.volume; - return SetVolumeResponse(); - } - - @override - Future dispose(DisposeRequest request) async { - _processingState = ProcessingStateMessage.idle; - _broadcastPlaybackEvent(); - return DisposeResponse(); - } - - @override - Future concatenatingInsertAll( - ConcatenatingInsertAllRequest request) async { - // TODO - return ConcatenatingInsertAllResponse(); - } - - @override - Future concatenatingMove( - ConcatenatingMoveRequest request) async { - // TODO - return ConcatenatingMoveResponse(); - } - - @override - Future concatenatingRemoveRange( - ConcatenatingRemoveRangeRequest request) async { - // TODO - return ConcatenatingRemoveRangeResponse(); - } - - _broadcastPlaybackEvent() { - String url; - if (_audioSource is UriAudioSourceMessage) { - // Not sure why this cast is necessary... - url = (_audioSource as UriAudioSourceMessage).uri.toString(); - } - eventController.add(PlaybackEventMessage( - processingState: _processingState, - updatePosition: _updatePosition, - updateTime: _updateTime, - bufferedPosition: _position ?? Duration.zero, - icyMetadata: IcyMetadataMessage( - headers: IcyHeadersMessage( - url: url, - genre: 'Genre', - metadataInterval: 3, - bitrate: 100, - isPublic: true, - name: 'name', - ), - info: IcyInfoMessage( - title: 'title', - url: url, - ), - ), - duration: _duration, - currentIndex: _index, - androidAudioSessionId: null, - )); - } - - Duration get _position { - if (_playing && _processingState == ProcessingStateMessage.ready) { - final result = - _updatePosition + (DateTime.now().difference(_updateTime)) * _speed; - return _duration == null || result <= _duration ? result : _duration; - } else { - return _updatePosition; - } - } - - Duration get _remaining => (_duration - _position) * (1 / _speed); - - void _setPosition(Duration position) { - _updatePosition = position; - _updateTime = DateTime.now(); - } -} - -class MockWebServer { - HttpServer _server; - int get port => _server.port; - - Future start() async { - _server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0); - _server.listen((request) async { - final response = request.response; - final body = utf8.encode('Hello'); - if (request.uri.path == '/proxy0.9/foo.mp3') { - final clientSocket = - await request.response.detachSocket(writeHeaders: false); - clientSocket.add(body); - await clientSocket.flush(); - await clientSocket.close(); - } else { - response.contentLength = body.length; - response.statusCode = HttpStatus.ok; - response.headers.set(HttpHeaders.contentTypeHeader, 'audio/mock'); - response.add(body); - await response.flush(); - await response.close(); - } - }); - } - - Future stop() => _server.close(); -} - -class MyHttpOverrides extends HttpOverrides {}