ryanheise / audio_service

Flutter plugin to play audio in the background while the screen is off.
796 stars 476 forks source link

Stop method (Audioservice.stop()) throwing NoSuchMethodError: The getter 'inMilliseconds' was called on null. #492

Closed Iamsdt closed 3 years ago

Iamsdt commented 3 years ago

Audio playing successfully, but the problem arises when clicking on Stop Button. (stop button call this AudioService.stop() function)

Minimal reproduction project Getting error on official example

To Reproduce (i.e. user steps, not code) Steps to reproduce the behaviour:

  1. Open app (official example code)
  2. Click "AudioPlayer" button
  3. When it started playing click on the 'Stop button' (even clicking on stop icon from notification, also throwing same error)

Error messages

E/flutter (11758): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The getter 'inMilliseconds' was called on null.
E/flutter (11758): Receiver: null
E/flutter (11758): Tried calling: inMilliseconds
E/flutter (11758): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (11758): #1      AudioServiceBackground.setState (package:audio_service/audio_service.dart:1354:16)
E/flutter (11758): #2      AudioPlayerTask._broadcastState (package:music_test/music_library.dart:155:34)
E/flutter (11758): #3      AudioPlayerTask.onStart.<anonymous closure> (package:music_test/music_library.dart:43:15)
E/flutter (11758): #4      _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (11758): #5      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (11758): #6      _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (11758): #7      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter (11758): #8      _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
E/flutter (11758): #9      _SyncBroadcastStreamController._sendData (dart:async/broadcast_stream_controller.dart:385:25)
E/flutter (11758): #10     _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:250:5)
E/flutter (11758): #11     _StartWithStreamSink.add (package:rxdart/src/transformers/start_with.dart:16:10)
E/flutter (11758): #12     forwardStream.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:rxdart/src/utils/forwarding_stream.dart:34:49)
E/flutter (11758): #13     forwardStream.runCatching (package:rxdart/src/utils/forwarding_stream.dart:24:12)
E/flutter (11758): #14     forwardStream.<anonymous closure>.<anonymous closure> (package:rxdart/src/utils/forwarding_stream.dart:34:28)
E/flutter (11758): #15     _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (11758): #16     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (11758): #17     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (11758): #18     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter (11758): #19     _DelayedData.perform (dart:async/stream_impl.dart:611:14)
E/flutter (11758): #20     _StreamImplEvents.handleNext (dart:async/stream_impl.dart:730:11)
E/flutter (11758): #21     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:687:7)
E/flutter (11758): #22     _rootRun (dart:async/zone.dart:1182:47)
E/flutter (11758): #23     _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (11758): #24     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (11758): #25     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter (11758): #26     _rootRun (dart:async/zone.dart:1190:13)
E/flutter (11758): #27     _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (11758): #28     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (11758): #29     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter (11758): #30     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (11758): #31     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
E/flutter (11758): 
I/flutter (11758): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
I/flutter (11758): #1      AudioServiceBackground.setState (package:audio_service/audio_service.dart:1354:16)
I/flutter (11758): #2      AudioPlayerTask._broadcastState (package:music_test/music_library.dart:155:34)
I/flutter (11758): #3      AudioPlayerTask.onStop (package:music_test/music_library.dart:126:11)
I/flutter (11758): <asynchronous suspension>
I/flutter (11758): #4      AudioServiceBackground.run.<anonymous closure> (package:audio_service/audio_service.dart:1102:25)
I/flutter (11758): #5      MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:430:55)
I/flutter (11758): #6      MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:383:34)
I/flutter (11758): #7      _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binding.dart:283:33)
I/flutter (11758): #8      _invoke3.<anonymous closure> (dart:ui/hooks.dart:280:15)
I/flutter (11758): #9      _rootRun (dart:async/zone.dart:1190:13)
I/flutter (11758): #10     _CustomZone.run (dart:async/zone.dart:1093:19)
I/flutter (11758): #11     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
I/flutter (11758): #12

Expected behaviour It should stop successfully.

Runtime Environment (please complete the following information if relevant):

Flutter SDK version

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.22.0, on Linux, locale en_US.UTF-8)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[!] Android Studio (version 4.0)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] Connected device (1 available)

! Doctor found issues in 1 category.
github-actions[bot] commented 3 years ago

This issue was automatically closed because it did not follow the issue template.

aleexbt commented 3 years ago

I'm receiving the same error.

Iamsdt commented 3 years ago

@aleexbt For a temporary solution, I make some changes on audio_service.dart class and add safe call there

position?.inMilliseconds ?? 0,
aleexbt commented 3 years ago

@Iamsdt Wow, that was fast, I can confirm it works, thanks.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs, or use StackOverflow if you need help with audio_service.