Coder Social home page Coder Social logo

sithira / flutterradioplayer Goto Github PK

View Code? Open in Web Editor NEW
133.0 11.0 59.0 12.33 MB

Flutter Radio Player, A Plugin to handle streaming audio without a hassle

License: BSD 3-Clause "New" or "Revised" License

Kotlin 42.32% Ruby 2.54% Swift 32.86% Objective-C 0.87% Dart 21.41%
flutter flutter-plugin flutter-audio-player flutter-background flutter-audio

flutterradioplayer's Introduction

logo

flutter_radio_player

Online Radio Player for Flutter

Pub Version Pub Likes Pub Points Pub Popularity

Flutter radio plugin handles a single streaming media preciously. This plugin was developed with maximum usage in mind. Flutter Radio player enables Streaming audio content on both Android and iOS natively, as an added feature this plugin supports background music play as well. This plugin also integrate deeply with both core media capabilities such as MediaSession on Android and RemoteControl capabilities (Control Center) on iOS. This plugin also support controlling the player via both wearOS and WatchOS.

Features

  • Supports both android and ios
  • Supports background music playing
  • Integrates well with watchOS and WearOS.
  • Handles network interruptions.
  • Reactive
  • Developer friendly (Logs are placed though out the codebase, so it's easy to trace a bug)

Reactivity ?

Unlike any other Music Playing plugin Flutter Radio Player is very reactive. It communicates with the native layer using Event and Streams, this making the plugin very reactive to both Application (Flutter) side and the native side.

Plugin events

This plugin utilises Android LocalBroadcaster and iOS Notification center for pushing out events. Names of the events are listed below.

  • flutter_radio_playing
  • flutter_radio_paused
  • flutter_radio_stopped
  • flutter_radio_error
  • flutter_radio_loading

Getting Started

  1. Add this to your package's pubspec.yaml file
dependencies:
  flutter_radio_player: ^2.X.X
  1. Install it
$ flutter pub get
  1. Import it
import 'package:flutter_radio_player/flutter_radio_player.dart';
  1. Configure it Creat a new instance of the player. An FlutterRadioPlayer instance can play a single audio stream at a time. To create it, simply call the constructor. However, DO NOT make multiple instances of the service as FRP is using a FOREGROUND SERVICE to keep itself live when you minimize the application in Android.
FlutterRadioPlayer _flutterRadioPlayer = FlutterRadioPlayer();

When you have an FRP instance you may simply call the init method to invoke the platform specific player preparation.

_flutterRadioPlayer.initPlayer();

When you have successfully initialized the player, then you can add media sources for the player to play.

  final FRPSource frpSource = FRPSource(
    mediaSources: <MediaSources>[
      MediaSources(
        url: "http://icecast.sithira.net:8052/stream", // dummy url
        description: "Stream with ICY",
        isPrimary: true,
        title: "Z Fun hundred",
        isAac: true
      ),
      MediaSources(
        url: "http://my-url:1025/stream;", // dummy url
        description: "Hiru FM Sri Lanka",
        isPrimary: false,
        title: "HiruFM",
        isAac: false
      ),
    ],
  );

As you can see, you have a couple of options for media source as well. One being available to use as the primary media-source. if you set a source as primary as it will be used to as the default source. But keep in mind that you cant have multiple primary data sources.

Once you have the media sources ready you might send the source list to player by calling

_flutterRadioPlayer.addMediaSources(frpSource);

In previous versions of FRP, you couldn't keep more than one stream. but with v2, you are able handle more source but only 1 stream will be active at once. Futhermore you will able to add the sources dynamically by calling

_flutterRadioPlayer.addMediaSource(myDynamicSource);

Besides above-mentioned method, below are the methods that FRP exposes.

  • stop() - Will stop all the streaming audio streams and detaches itself from FOREGROUND SERVICE. You need to reinitialize to use the plugin again,
_flutterRadioPlayer.stop()
  • start() - Will start the audio stream using the initialized object.
_flutterRadioPlayer.start()
  • pause() - Will pause the audio stream using the initialized object.
_flutterRadioPlayer.pause()
  • next() - Will advance the player's active media-source to next if you have multiple sources setup.
_flutterRadioPlayer.next()
  • previous() - Will fallback the player's active media-source to previous if you have multiple sources setup.
_flutterRadioPlayer.previous()
  • setVolume(volumne) - Will set the player volume. Keep in mind that the plugin will adjust along with the system volume as well to give the best experience.
_flutterRadioPlayer.setVolume(0.25)
  • If you are planing to keep track of the media-sources by your-self, you can use below.
_flutterRadioPlayer.seekToMediaSource(position,  playWhenReady);

Did someone say ID3/Icy-Header info ๐Ÿฅณ?

Yes, we have support for Icy and Shoutcast ID3 data pulling as well if your stream supports it. Plugin push the contents through when you stream details change along with the track change. We have done our testing for this, but it's mainly over icecast only.

iOS and Android Support

If the plugin is failing to initiate, kindly make sure your permission for background processes are given for your application

For your Android application you might want to add permissions in AndroidManifest.xml. This is already added for in the library level.

    <!--  Permissions for the plugin  -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <!--  Services for the plugin  -->
    <application android:usesCleartextTraffic="true">
        <service android:name=".core.StreamingCore"/>
    </application>

For your iOS application you need to enable it like this

xcode image

Now that's not all. This plugin handles almost everything for you when it comes to playing a single stream of audio. From Player meta details to network interruptions, FRP handles it all with a sweat. Please refer the example to get an idea about what FRP can do.

Support

Please hit a like to plugin on pub if you used it and love it. put a โญ๏ธ my GitHub repo and show me some โ™ฅ๏ธ so i can keep working on this.

Found a bug ?

Please feel free to throw in a pull request. Any support is warmly welcome.

flutterradioplayer's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutterradioplayer's Issues

Metadata Track get artist, song etc. in different Text Widgets

Hello, in your example I saw that your package makes it possible to get the current Artist and Song but both things are displayed in one TextWidget with snapshot.data.

Is it possible to show Artist and Song in different Text Widgets?

Do your package also provides the ability to show the album cover or the album name or the song length?

Error on startup, not able to use this package. MethodChannel.invokeMethod

Steps to reproduce:

  1. Use original content of example/main.dart
  2. Add flutter_radio_player: ^1.0.3 to your pubspec.yaml
  3. flutter run
    Or
    Just execute the example project folder.

Stacktrace:

E/flutter (21695): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method initService on channel flutter_radio_player)
E/flutter (21695): #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:319:7)
E/flutter (21695): <asynchronous suspension>
E/flutter (21695): #1      FlutterRadioPlayer.init (package:flutter_radio_player/flutter_radio_player.dart:23:27)
E/flutter (21695): #2      _MyAppState.initRadioService (package:saloniker/main.dart:29:33)
E/flutter (21695): #3      _MyAppState.initState (package:saloniker/main.dart:24:5)
E/flutter (21695): #4      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)
E/flutter (21695): #5      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (21695): #6      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (21695): #7      Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (21695): #8      RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1028:16)
E/flutter (21695): #9      RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:999:5)      
E/flutter (21695): #10     RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:942:17)
E/flutter (21695): #11     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2412:19)
E/flutter (21695): #12     RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:941:13)
E/flutter (21695): #13     WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:819:7)
E/flutter (21695): #14     WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:804:7)
E/flutter (21695): #15     _rootRun (dart:async/zone.dart:1122:38)
E/flutter (21695): #16     _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (21695): #17     _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (21695): #18     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
E/flutter (21695): #19     _rootRun (dart:async/zone.dart:1126:13)
E/flutter (21695): #20     _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (21695): #21     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:949:23)
E/flutter (21695): #22     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:23:15)
E/flutter (21695): #23     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:384:19)
E/flutter (21695): #24     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:418:5)
E/flutter (21695): #25     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)
E/flutter (21695):
I/flutter (21695): โ•โ•โ•ก EXCEPTION CAUGHT BY SERVICES LIBRARY โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
I/flutter (21695): The following MissingPluginException was thrown while activating platform stream on channel
I/flutter (21695): flutter_radio_player_stream:
I/flutter (21695): MissingPluginException(No implementation found for method listen on channel
I/flutter (21695): flutter_radio_player_stream)
I/flutter (21695):
I/flutter (21695): When the exception was thrown, this was the stack:
I/flutter (21695): #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:319:7)
I/flutter (21695): <asynchronous suspension>
I/flutter (21695): #1      EventChannel.receiveBroadcastStream.<anonymous closure> (package:flutter/src/services/platform_channel.dart:517:29)
I/flutter (21695): #3      EventChannel.receiveBroadcastStream.<anonymous closure> (package:flutter/src/services/platform_channel.dart:503:64)
I/flutter (21695): #11     _StreamBuilderBaseState._subscribe (package:flutter/src/widgets/async.dart:135:37)
I/flutter (21695): #12     _StreamBuilderBaseState.initState (package:flutter/src/widgets/async.dart:109:5)
I/flutter (21695): #13     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)        
I/flutter (21695): #14     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #15     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #16     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5551:32)
I/flutter (21695): #17     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #18     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #19     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #20     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #21     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #22     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #23     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #24     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #25     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #26     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #27     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #28     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #29     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #30     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #31     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #32     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #33     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #34     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #35     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #36     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #37     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #38     ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4617:11)
I/flutter (21695): #39     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #40     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5551:32)
I/flutter (21695): #41     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #42     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #43     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #44     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #45     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #46     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)        
I/flutter (21695): #47     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #48     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #49     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #50     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #51     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #52     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #53     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #54     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #55     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #56     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #57     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #58     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #59     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #60     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #61     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #62     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #63     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #64     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #65     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #66     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #67     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #68     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #69     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #70     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #71     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #72     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #73     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #74     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #75     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #76     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #77     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #78     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)        
I/flutter (21695): #79     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #80     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #81     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #82     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #83     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #84     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #85     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #86     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #87     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #88     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #89     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #90     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #91     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #92     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #93     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #94     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #95     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #96     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #97     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #98     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #99     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #100    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #101    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #102    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #103    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #104    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #105    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #106    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #107    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #108    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #109    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #110    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #111    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #112    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #113    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #114    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #115    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #116    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #117    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #118    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #119    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #120    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #121    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #122    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #123    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #124    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #125    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #126    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)        
I/flutter (21695): #127    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #128    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #129    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #130    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #131    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #132    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #133    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #134    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #135    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #136    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #137    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #138    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #139    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #140    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #141    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #142    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #143    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #144    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #145    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #146    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #147    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #148    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #149    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #150    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #151    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #152    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #153    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #154    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #155    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #156    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #157    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #158    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #159    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #160    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #161    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #162    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #163    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #164    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #165    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #166    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #167    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #168    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #169    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #170    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #171    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #172    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #173    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #174    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #175    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #176    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #177    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #178    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #179    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #180    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #181    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #182    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #183    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #184    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #185    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #186    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #187    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #188    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #189    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #190    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #191    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #192    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #193    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #194    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #195    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #196    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #197    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #198    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #199    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #200    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #201    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #202    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #203    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5551:32)
I/flutter (21695): #204    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #205    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #206    _TheatreElement.mount (package:flutter/src/widgets/overlay.dart:591:16)
I/flutter (21695): #207    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #208    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #209    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #210    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #211    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #212    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)        
I/flutter (21695): #213    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #214    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #215    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #216    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #217    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #218    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #219    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #220    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #221    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #222    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #223    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #224    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #225    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #226    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #227    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #228    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #229    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #230    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #231    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #232    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #233    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #234    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #235    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #236    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #237    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #238    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #239    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #240    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #241    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #242    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #243    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #244    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #245    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #246    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #247    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #248    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #249    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #250    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #251    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #252    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #253    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #254    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #255    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #256    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #257    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #258    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #259    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #260    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #261    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #262    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #263    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #264    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #265    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #266    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #267    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #268    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #269    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #270    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #271    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #272    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #273    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #274    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #275    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #276    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #277    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #278    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #279    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #280    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #281    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #282    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #283    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #284    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #285    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #286    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #287    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #288    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #289    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #290    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #291    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #292    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #293    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #294    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #295    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #296    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #297    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #298    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #299    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #300    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #301    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #302    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #303    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #304    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #305    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #306    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #307    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #308    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #309    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #310    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #311    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #312    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #313    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #314    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #315    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #316    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #317    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #318    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #319    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #320    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #321    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #322    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #323    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #324    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #325    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #326    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #327    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #328    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #329    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #330    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #331    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #332    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #333    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)    
I/flutter (21695): #334    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #335    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #336    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #337    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #338    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #339    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #340    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #341    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #342    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #343    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #344    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #345    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #346    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #347    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #348    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #349    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #350    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #351    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #352    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #353    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #354    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #355    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #356    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #357    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)        
I/flutter (21695): #358    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #359    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #360    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #361    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #362    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #363    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #364    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #365    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #366    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #367    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #368    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #369    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #370    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #371    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #372    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #373    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #374    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #375    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #376    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #377    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #378    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #379    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #380    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (21695): #381    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #382    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #383    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #384    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #385    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #386    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #387    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #388    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #389    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #390    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #391    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #392    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #393    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #394    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #395    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
Syncing files to device GM1910...                                5.188ms (!)
I/flutter (21695): #396    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #397    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #398    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #399    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #400    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #401    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #402    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #403    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #404    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #405    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #406    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #407    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #408    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #409    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #410    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #411    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #412    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #413    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #414    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #415    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #416    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #417    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #418    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #419    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #420    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #421    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #422    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #423    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (21695): #424    Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (21695): #425    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
I/flutter (21695): #426    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
I/flutter (21695): #427    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (21695): #428    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (21695): #429    Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (21695): #430    RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1028:16)
I/flutter (21695): #431    RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:999:5)
I/flutter (21695): #432    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:942:17)
I/flutter (21695): #433    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2412:19)
I/flutter (21695): #434    RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:941:13)
I/flutter (21695): #435    WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:819:7)
I/flutter (21695): #436    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:804:7)
I/flutter (21695): #445    _Timer._runTimers (dart:isolate-patch/timer_impl.dart:384:19)
I/flutter (21695): #446    _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:418:5)
I/flutter (21695): #447    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)
I/flutter (21695): (elided 16 frames from package dart:async and package dart:async-patch)

Problems in iOS

Hi, I've been testing the plugin and I loved it, on Android it works perfectly, but on iOS I found a couple of drawbacks. I'll explain my case.

I have an app, with two views one called Home (which would be the screen you see when you start the app) and one called Radio (this is where I implement the plugins). Then from Home I can enter to the radio (I do this because the app has more functionalities from which you can access from Home).

The first inconvenience is that if from Home I enter to Radio and then I return to Home and then I enter again to Radio, the app closes immediately.

The error is generated in the following code:

and the console displays the following:

in general, I could solve it saving the reproduction state in the Storage of the device, because when I enter to Radio for the second time, the following code is executed again and there the error is generated:

await _reproductor.init("title", "description","URL", "false");

Then, when I have the status of "started" the transmission, I avoid that code to be executed again, and when I do that, the plugins works again well.

The next problem I found is in the second plan playback. If the app is open in Radio, the controls in background work correctly, but if the app is in Home, the controls don't work, and when I put play/pause the app closes giving the same error as above.

I tested it on an iPhone 7 with iOS 13.5.5 and an iPhone 11 pro Max with iOS 13.5,

Greetings.

Duration & seek-to functionality

Hi.

Is there any chance to have a duration stream and maybe seek-to functionality?

Similar to what notification has now, a way to show a duration seek-bar and updated it using a StreamBuilder maybe.

Thanks!

Fatal error

Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Users/linar/development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.5/ios/Classes/SwiftFlutterRadioPlayerPlugin.swift, line 109

Bug: Play/pause button first start

Only at the first start of the radio, the status of the button is play but should be paused. Music is playing and show play button.

After press on play button the status of the button get correct.

Tested with: ios iphone X 13.3.1

iOS: init 'playWhenReady' flag ignored

You need to do this (so set to false by default, only set true if the string == "true")
In initService (StreamingCore.swift)

    self.playWhenReady = false

    if playWhenReady == "true" {
        print("PlayWhenReady: true")
        self.playWhenReady = true
    }

lateinit property coreService has not been initialized.

hello Sithira,
nice package (:

Do you know why when I try to play this radio I'm getting this error?
http://cms.sintonizar.radio.br:8088/cms/cms/icecast.audio

E/flutter (11581): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: PlatformException(error, lateinit property coreService has not been initialized, null)
E/flutter (11581): #0      StandardMethodCodec.decodeEnvelope 
package:flutter/โ€ฆ/services/message_codecs.dart:572
E/flutter (11581): #1      MethodChannel._invokeMethod 
package:flutter/โ€ฆ/services/platform_channel.dart:161
E/flutter (11581): <asynchronous suspension>
E/flutter (11581): #2      MethodChannel.invokeMethod 
package:flutter/โ€ฆ/services/platform_channel.dart:334
E/flutter (11581): #3      FlutterRadioPlayer.playOrPause 

Navigation not working in example

The noob that i am is using the suplied example as boilerplate for my app.
Everything works fine.
Now i want to add 1 or 2 static text widgets/pages but i cant seem to get the navigation in the bottomNavigationBar working.
Can somebody take a look at that and maybe even get it to work?

I just cant wrap my head around why it isnt working, and the noobnes of me prevent me from fixing.

Error in Service

/MethodChannel#flutter_radio_player(24427): Failed to handle method call
E/MethodChannel#flutter_radio_player(24427): java.lang.IllegalArgumentException: Service not registered: me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin$serviceConnection$1@94492bd
E/MethodChannel#flutter_radio_player(24427): at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1160)
E/MethodChannel#flutter_radio_player(24427): at android.app.ContextImpl.unbindService(ContextImpl.java:1475)
E/MethodChannel#flutter_radio_player(24427): at android.content.ContextWrapper.unbindService(ContextWrapper.java:644)
E/MethodChannel#flutter_radio_player(24427): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.stop(FlutterRadioPlayerPlugin.kt:181)
E/MethodChannel#flutter_radio_player(24427): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.onMethodCall(FlutterRadioPlayerPlugin.kt:75)
E/MethodChannel#flutter_radio_player(24427): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226)
E/MethodChannel#flutter_radio_player(24427): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#flutter_radio_player(24427): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:631)
E/MethodChannel#flutter_radio_player(24427): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter_radio_player(24427): at android.os.MessageQueue.next(MessageQueue.java:323)
E/MethodChannel#flutter_radio_player(24427): at android.os.Looper.loop(Looper.java:135)
E/MethodChannel#flutter_radio_player(24427): at android.app.ActivityThread.main(ActivityThread.java:7325)
E/MethodChannel#flutter_radio_player(24427): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#flutter_radio_player(24427): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
E/MethodChannel#flutter_radio_player(24427): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

playing from radio list

i have list of radio url , i want to play that radio when url is clicked , any suggestion ?

how to get current audo level

Hi,

This amazing library was a game changer to implement a stream player in a easy way but I miss some feature that maybe could be included soon or in a easy way how to get the current playback audio level to plot it.

edit: done, I figured out how to do it outside the lib, thanks!

Crash on android

My application going crash sometime when run in release mode, when i check in the crashlytics logs, the problem in this libary and say "Services not registered"

Can you give me solution to handle this issue?
Screen Shot 2021-09-09 at 12 58 34

wont switch stations

So the following is going to look like a mess (sorry in advance)

However I needed away to do a GridView that allowed the user to change station.

When the app launches the app starts playing as it is meant to however when I click on a stations logo it does not start playing said station.

If anyone can assist that would be great.

Full code:
`import 'dart:async';
import 'dart:convert';
import 'package:flutter/foundation.dart';

import 'package:flutter/material.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/services.dart';
import 'package:flutter_radio_player/flutter_radio_player.dart';
import './screens/trackswidget.dart';
import 'about_widget.dart';

/* TO FETCH PHOTOS */

Photo photoFromJson(String str) => Photo.fromJson(json.decode(str));

String photoToJson(Photo data) => json.encode(data.toJson());

class Photo {
Photo({
this.data,
});

List data;

factory Photo.fromJson(Map<String, dynamic> json) => Photo(
data: List.from(json["data"].map((x) => Datum.fromJson(x))),
);

Map<String, dynamic> toJson() => {
"data": List.from(data.map((x) => x.toJson())),
};
}

class Datum {
Datum({
this.id,
this.name,
this.imageurl,
this.website,
this.listenlive,
});

String id;
String name;
String imageurl;
String website;
String listenlive;

factory Datum.fromJson(Map<String, dynamic> json) => Datum(
id: json["_id"],
name: json["name"],
imageurl: json["imageurl"],
website: json["website"],
listenlive: json["listenlive"],
);

Map<String, dynamic> toJson() => {
"_id": id,
"name": name,
"imageurl": imageurl,
"website": website,
"listenlive": listenlive,
};
}

/* TO FETCH PHOTOS */
Future fetchPhotos(http.Client client) async {
final response =
//await client.get('https://jsonplaceholder.typicode.com/photos');
await client.get('https://api.drn1.com.au/station/allstations');
// Use the compute function to run parsePhotos in a separate isolate.
return compute(parsePhotos, response.body);
}

// A function that converts a response body into a List.
Photo parsePhotos(String responseBody) {
return photoFromJson(responseBody);
}

class PhotosList extends StatelessWidget {
final Photo photos;
FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

PhotosList({Key key, this.photos}) : super(key: key);

@OverRide
Widget build(BuildContext context) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1,
childAspectRatio: MediaQuery.of(context).size.width /
(MediaQuery.of(context).size.height / 4), //childAspectRatio: 200,
),
scrollDirection: Axis.horizontal,
itemCount: photos.data.length,
itemBuilder: (context, index) {
return RaisedButton(
padding: const EdgeInsets.all(0),
textColor: Colors.white,
color: Colors.red,
onPressed: () async { await _flutterRadioPlayer.setUrl(photos.data[index].listenlive+'?uuid=0000-0000-0000-0000', "false");
},

      child: CachedNetworkImage(
        imageUrl: photos.data[index].imageurl,
        placeholder: (context, url) => CircularProgressIndicator(),
        errorWidget: (context, url, error) => Icon(Icons.error),
      ),
    );
    // return Image.network(photos.data[index].imageurl, width: 80.0, height: 80.0,);
  },
);

}
}

/END FETCH PHOTOS/

/END FETCH PHOTOS/

/* RADIO STATIONS */
Radata radataFromJson(String str) => Radata.fromJson(json.decode(str));

String radataToJson(Radata data) => json.encode(data.toJson());

class Radata {
Radata({
this.data,
});

List data;

factory Radata.fromJson(Map<String, dynamic> json) => Radata(
data: List.from(json["data"].map((x) => Radio.fromJson(x))),
);

Map<String, dynamic> toJson() => {
"data": List.from(data.map((x) => x.toJson())),
};
}

class Radio {
Radio({
this.id,
this.name,
this.imageurl,
this.website,
this.listenlive,
});

String id;
String name;
String imageurl;
String website;
String listenlive;

factory Radio.fromJson(Map<String, dynamic> json) => Radio(
id: json["_id"],
name: json["name"],
imageurl: json["imageurl"],
website: json["website"],
listenlive: json["listenlive"],
);

Map<String, dynamic> toJson() => {
"_id": id,
"name": name,
"imageurl": imageurl,
"website": website,
"listenlive": listenlive,
};
}
/* END RADIO STATIONS*/

class Home extends StatefulWidget {
var playerState = FlutterRadioPlayer.flutter_radio_paused;

var volume = 0.8;

@OverRide
State createState() {
return _HomeState();
}
}

class _HomeState extends State {
Future _future;
Future getHttp() async {
http.Response response =
await http.get("https://api.drn1.com.au/station/allstations");
if (response.statusCode == 200) {
return radataFromJson(response.body);
}
}

bool check = true;
int _currentIndex = 0;
FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

@OverRide
void initState() {
_future = getHttp();
initRadioService();
super.initState();
}

Future initRadioService() async {
try {
await _flutterRadioPlayer.init(
"DRN1", "Live", "http://stream.radiomedia.com.au:8003/stream", "true");
} on PlatformException {
print("Exception occurred while trying to register the services.");
}
//await _flutterRadioPlayer.play();
}

Future changestation(e) async{
try {
await _flutterRadioPlayer.setUrl(e, "true");
// await _flutterRadioPlayer.play();
} on PlatformException {
print("Exception occurred while trying to register the services.");
}
}

final List _children = [TracksWidget(),
AboutWidget()];

@OverRide
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.black,
title: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('DRN',style: TextStyle(color: Colors.white, fontSize: 40.0),),
const Text('1', style: TextStyle(color: Colors.red, fontSize: 40.0),)
],
),
),
//body: _children[_currentIndex],
body: Column(children: [
FutureBuilder(
future: fetchPhotos(http.Client()),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);

                return snapshot.hasData
                ? Expanded(child: PhotosList(photos: snapshot.data))
                    : Center(child: CircularProgressIndicator());
                },
            ),
]),
 /*Column(
      children: [ SizedBox(
                  height:200,
                  child:ListView(
                    // This next line does the trick.
                    scrollDirection: Axis.horizontal,
                      children: <Widget>[
                        Container(
                          width: 200.0,
                          height: 200.0,
                          color: Colors.red,
                          child: new RaisedButton(
                            padding: const EdgeInsets.all(0),
                            textColor: Colors.white,
                            color: Colors.red,
                            onPressed: () async {  await changestation('http://stream.radiomedia.com.au:8006/stream');
                            },

                            child: CachedNetworkImage(
                              imageUrl: "http://via.placeholder.com/200x200",
                              placeholder: (context, url) => CircularProgressIndicator(),
                              errorWidget: (context, url, error) => Icon(Icons.error),
                            ),
                          ),

                        ),
                       GestureDetector(
                            child: SizedBox(
                              width: 200,
                              height:200,
                              child: CachedNetworkImage(
                                imageUrl: "http://via.placeholder.com/200x200",
                                placeholder: (context, url) => CircularProgressIndicator(),
                                errorWidget: (context, url, error) => Icon(Icons.error),
                              ),
                            ),
                            onTap:() async {  await changestation('http://stream.radiomedia.com.au:8015/stream');}
                          ),
                          /*child: new RaisedButton(
                                              padding: const EdgeInsets.all(0),
                                              textColor: Colors.white,
                                              color: Colors.blue,
                                              onPressed: () async {  await changestation('http://stream.radiomedia.com.au:8015/stream');
                                              },

                                                child: CachedNetworkImage(
                                                  imageUrl: "http://via.placeholder.com/200x200",
                                                  placeholder: (context, url) => CircularProgressIndicator(),
                                                  errorWidget: (context, url, error) => Icon(Icons.error),
                                                ),
                                            ),

*/
Container(
width: 200.0,
height: 200.0,
color: Colors.green,
),
Container(
width: 200.0,
height: 200.0,
color: Colors.yellow,
),
Container(
width: 200.0,
height: 200.0,
color: Colors.orange,
),
],
),
),

            FutureBuilder<List<Photo>>(
              future: fetchPhotos(http.Client()),
              builder: (context, snapshot) {
                if (snapshot.hasError) print(snapshot.error);

                return snapshot.hasData
                    ?  Expanded(child: PhotosList(photos: snapshot.data))
                    : Center(child: CircularProgressIndicator());
              },
            ),


          Row(
          children: <Widget>[
            Expanded(
              child: new RaisedButton(
                padding: const EdgeInsets.all(8.0),
                textColor: Colors.white,
                color: Colors.blue,
                onPressed: () async {  await changestation('http://stream.radiomedia.com.au:8015/stream');
                },

                child: new Text("Change Station"),
              ),
            ),
            Expanded(
              child: Text('Craft beautiful UIs', textAlign: TextAlign.center),
            ),
            Expanded(
              child: FittedBox(
                fit: BoxFit.contain, // otherwise the logo will be tiny
                child: const FlutterLogo(),
              ),
            ),
          ],
        ),

]),*/

/* body: Center(
child: Column(
children: [
StreamBuilder(
stream: _flutterRadioPlayer.isPlayingStream,
initialData: widget.playerState,
builder:
(BuildContext context, AsyncSnapshot snapshot) {
String returnData = snapshot.data;
print("object data: " + returnData);
switch (returnData) {
case FlutterRadioPlayer.flutter_radio_stopped:
return RaisedButton(
child: Text("Start listening now"),
onPressed: () async {
await initRadioService();
});
break;
case FlutterRadioPlayer.flutter_radio_loading:
return Text("Loading stream...");
case FlutterRadioPlayer.flutter_radio_error:
return RaisedButton(
child: Text("Retry ?"),
onPressed: () async {
await initRadioService();
});
break;
default:
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
onPressed: () async {
print("button press data: " +
snapshot.data.toString());
await _flutterRadioPlayer.playOrPause();
},
icon: snapshot.data ==
FlutterRadioPlayer
.flutter_radio_playing
? Icon(Icons.pause)
: Icon(Icons.play_arrow)),
IconButton(
onPressed: () async {
await _flutterRadioPlayer.stop();
},
icon: Icon(Icons.stop))
]);
break;
}
}),
Slider(
value: widget.volume,
min: 0,
max: 1.0,
onChanged: (value) => setState(() {
widget.volume = value;
_flutterRadioPlayer.setVolume(widget.volume);
})),
Text("Volume: " + (widget.volume * 100).toStringAsFixed(0))
],
),
),
*/

  floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
  floatingActionButton: Container(
    height: 80.0,
    width: 80.0,
    child: FittedBox(
      child:FloatingActionButton(
              onPressed: () => {
                setState((){
                  if(check)
                  {
                    check = false;
                     _flutterRadioPlayer.play();
                    print("false");
                  }
                  else
                  {
                    check = true;
                     _flutterRadioPlayer.pause();
                    print("true");
                  }

                }),
                },
     child: Icon(check ? Icons.play_arrow: Icons.pause),
            backgroundColor: Colors.black,
            mini: true,
          ),
    ),

  ),
  bottomNavigationBar: BottomAppBar(
    shape: CircularNotchedRectangle(),
    child: Container(
      decoration:
      new BoxDecoration(color: new Color(0xFFFF0000)),
      height: 75,
      child: Row(
        mainAxisSize: MainAxisSize.max,
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(left: 28.0),
            icon: Icon(Icons.home),
            onPressed: () {
              setState(() {

                onTabTapped(0);
              });
            },
          ),
      /*    IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(right: 28.0),
            icon: Icon(Icons.search),
            onPressed: () {
              setState(() {
                onTabTapped(1);
              });
            },
          ),
          IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(left: 28.0),
            icon: Icon(Icons.notifications),
            onPressed: () {
              setState(() {
                onTabTapped(2);
              });
            },
          ),*/
          IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(right: 28.0),
            icon: Icon(Icons.info_outline),
            onPressed: () {
              setState(() {
                onTabTapped(1);
              });
            },
          )
        ],
      ),
    ),
  ),// new

);

}

void onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
}`

Stream not working when hot restart

I try this case, when stream is playing and i press hot restart my application, my music still playing in background but in StreamBuilder status is flutter_radio_paused

How we handle this event?

MissingPluginException

Exception has occurred.
MissingPluginException (MissingPluginException(No implementation found for method initService on channel flutter_radio_player))

Please how can I solve this?

Couldn't get localbroadcastmanager version 1.0.0

FAILURE: Build failed with an exception.

  • What went wrong:
    Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.

Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'.
Could not determine artifacts for androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
> Could not get resource 'https://dl.google.com/dl/android/maven2/androidx/localbroadcastmanager/localbroadcastmanager/1.0.0/localbroadcastmanager-1.0.0.aar'.
> Could not HEAD 'https://dl.google.com/dl/android/maven2/androidx/localbroadcastmanager/localbroadcastmanager/1.0.0/localbroadcastmanager-1.0.0.aar'.
> Unsupported record version Unknown-84.84

Stream Issue When Listen in 2 Screen

I have an issue with stream builder here.

I have two screens, that's is A and B.
i place StreamBuilder in the both of screen and listen to the same screen "_isPlayingStream" in Provider.

When i open screen B, i run the function Flutter radio init, and the stream running in screen A and B.

But when i close screen B, the stream in screen A not working, when i test print it's not receiving any stream data.

Error Kotlin

Hello, how are you?
I am interested in using the flutter_radio_player, I am using the Android studio to run the example code, but this is giving an error, I have already researched the solution for this error and so far I have not found it.
Do you have any suggestions to resolve this error below
I thank you for your help
Samuel
flutter_radio_player.txt

  • What went wrong:
    Execution failed for task ':flutter_radio_player:compileDebugKotlin'.

Compilation error. See log for more details

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 23s
Finished with error: Gradle task assembleDebug failed with exit code 1

Crash on Android

I got this error when try Init this package like in the documentations:
It's work on iOS, but in Android crash.
Can you give me solution?

E/AndroidRuntime(15749): java.lang.AbstractMethodError: abstract method "java.lang.CharSequence com.google.android.exoplayer2.ui.PlayerNotificationManager$MediaDescriptionAdapter.getCurrentContentTitle(com.google.android.exoplayer2.Player)"
E/AndroidRuntime(15749): at com.google.android.exoplayer2.ui.PlayerNotificationManager.createNotification(PlayerNotificationManager.java:1189)
E/AndroidRuntime(15749): at com.google.android.exoplayer2.ui.PlayerNotificationManager.startOrUpdateNotification(PlayerNotificationManager.java:1066)
E/AndroidRuntime(15749): at com.google.android.exoplayer2.ui.PlayerNotificationManager.handleMessage(PlayerNotificationManager.java:1329)
E/AndroidRuntime(15749): at com.google.android.exoplayer2.ui.PlayerNotificationManager.lambda$ZG0s-7uOzb-YtyUlp8ahx3j4wBg(Unknown Source:0)
E/AndroidRuntime(15749): at com.google.android.exoplayer2.ui.-$$Lambda$PlayerNotificationManager$ZG0s-7uOzb-YtyUlp8ahx3j4wBg.handleMessage(Unknown Source:2)
E/AndroidRuntime(15749): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(15749): at android.os.Looper.loop(Looper.java:236)
E/AndroidRuntime(15749): at android.app.ActivityThread.main(ActivityThread.java:8043)
E/AndroidRuntime(15749): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(15749): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
E/AndroidRuntime(15749): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)

@Sithira

Problem with SDK 30

Hello,
Now in PlayStore it is mandatory to upload an app with SDK 30.
This library gives an error when compiling in that version.

Error log:

e: C:\Users\leand\flutter.pub-cache\hosted\pub.dartlang.org\flutter_radio_player-1.0.7\android\src\main\kotlin\me\sithiramunasinghe\flutter\flutter_radio_player\core\StreamingCore.kt: (121, 90): Type mismatch: inferred type is String? but String was expected
e: C:\Users\leand\flutter.pub-cache\hosted\pub.dartlang.org\flutter_radio_player-1.0.7\android\src\main\kotlin\me\sithiramunasinghe\flutter\flutter_radio_player\core\StreamingCore.kt: (123, 63): Type mismatch: inferred type is String? but String was expected
e: C:\Users\leand\flutter.pub-cache\hosted\pub.dartlang.org\flutter_radio_player-1.0.7\android\src\main\kotlin\me\sithiramunasinghe\flutter\flutter_radio_player\core\StreamingCore.kt: (174, 32): Type mismatch: inferred type is String? but String was expected

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':flutter_radio_player:compileReleaseKotlin'.

Compilation error. See log for more details

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1m 19s

Another SimpleCache instance uses the folder:

I'm having the following error in multiple devices isn't all the time but is crashing the app, it looks like it is something to do with SimpleExoPlayer caching process but I would like to see if you are familiar with this? and if can ve resolve from the library point of view.

Fatal Exception: java.lang.RuntimeException
Unable to start service me.sithiramunasinghe.flutter.flutter_radio_player.core.Streaming
Core@f008310 with Intent { cmp=com.tex.app/me.sithiramunasinghe.flutter.flutter_radio_player.core.StreamingCore (has extras) }: java.lang.IllegalStateException: Another SimpleCache instance uses the folder: /data/user/0/com.test.app/cache

Screen Shot 2020-06-21 at 7 36 39 PM

Thanks!.

Record audio

Hello, It's not a Issue.
I request for a feature, if it's possible to add possibility to record video if user want and store it locally

Fail running on Android Simulator and Device. Run on IOS OK no issue

Try testing the example. OK on IOS simulator and device BUT FAIL on Android Simulator and Device.
See errors below;
Restarted application in 1,312ms.
I/javaClass(31009): Calling to method: initService
I/javaClass(31009): start service invoked
I/javaClass(31009): Attempting to initialize service...
I/javaClass(31009): Service not bound, binding now....
I/javaClass(31009): Mapping method call to player item object
I/flutter (31009): object data: flutter_radio_paused
I/flutter (31009): object data: flutter_radio_paused
I/flutter (31009): 360.0
V/AudioManager(31009): querySoundEffectsEnabled...
I/flutter (31009): button press data: flutter_radio_paused
I/flutter (31009): Invoking platform method: playOrPause
I/javaClass(31009): Calling to method: playOrPause
I/javaClass(31009): Attempting to either play or pause...
I/javaClass(31009): Attempting to get playing status....
E/MethodChannel#flutter_radio_player(31009): Failed to handle method call
E/MethodChannel#flutter_radio_player(31009): kotlin.UninitializedPropertyAccessException: lateinit property coreService has not been initialized
E/MethodChannel#flutter_radio_player(31009): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.isPlaying(FlutterRadioPlayerPlugin.kt:192)
E/MethodChannel#flutter_radio_player(31009): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.playOrPause(FlutterRadioPlayerPlugin.kt:199)
E/MethodChannel#flutter_radio_player(31009): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.onMethodCall(FlutterRadioPlayerPlugin.kt:64)
E/MethodChannel#flutter_radio_player(31009): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/MethodChannel#flutter_radio_player(31009): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#flutter_radio_player(31009): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:738)
E/MethodChannel#flutter_radio_player(31009): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter_radio_player(31009): at android.os.MessageQueue.next(MessageQueue.java:363)
E/MethodChannel#flutter_radio_player(31009): at android.os.Looper.loop(Looper.java:176)
E/MethodChannel#flutter_radio_player(31009): at android.app.ActivityThread.main(ActivityThread.java:8347)
E/MethodChannel#flutter_radio_player(31009): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#flutter_radio_player(31009): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
E/MethodChannel#flutter_radio_player(31009): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
E/flutter (31009): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(error, lateinit property coreService has not been initialized, null, kotlin.UninitializedPropertyAccessException: lateinit property coreService has not been initialized
E/flutter (31009): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.isPlaying(FlutterRadioPlayerPlugin.kt:192)
E/flutter (31009): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.playOrPause(FlutterRadioPlayerPlugin.kt:199)
E/flutter (31009): at me.sithiramunasinghe.flutter.flutter_radio_player.FlutterRadioPlayerPlugin.onMethodCall(FlutterRadioPlayerPlugin.kt:64)
E/flutter (31009): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/flutter (31009): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/flutter (31009): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:738)
E/flutter (31009): at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (31009): at android.os.MessageQueue.next(MessageQueue.java:363)
E/flutter (31009): at android.os.Looper.loop(Looper.java:176)
E/flutter (31009): at android.app.ActivityThread.main(ActivityThread.java:8347)
E/flutter (31009): at java.lang.reflect.Method.invoke(Native Method)
E/flutter (31009): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
E/flutter (31009): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
E/flutter (31009): )
E/flutter (31009): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582:7)
E/flutter (31009): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18)
E/flutter (31009):
E/flutter (31009): #2 FlutterRadioPlayer.playOrPause (package:flutter_radio_player/flutter_radio_player.dart:45:12)
E/flutter (31009):
E/flutter (31009): #3 _MyAppState.build.. (package:flutter_radio_player_example/main.dart:91:37)
E/flutter (31009):
E/flutter (31009):
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
I/flutter (31009): 360.0
D/DecorView(31009): showOrHideHighlightView: hasFocus=false; winMode=1; isMrgNull=true
D/RtgSched(31009): resetRtgSchedHandle failed enable:0
W/libEGL (31009): EGLNativeWindowType 0x79bcdfd010 disconnect failed
W/libEGL (31009): EGLNativeWindowType 0x7a1be5abd0 disconnect failed
D/ActivityThread(31009): Remove activity client record, r= ActivityRecord{a12562e token=android.os.BinderProxy@d0e3985 {me.sithiramunasinghe.flutter.flutter_radio_player_example/me.sithiramunasinghe.flutter.flutter_radio_player_example.MainActivity}} token= android.os.BinderProxy@d0e3985
D/ZrHung.AppEyeUiProbe(31009): not watching, wait.

Cannot run app Null Safety error

The recent flutter update does not let me debug/build the app because the package does not support null safety.
Please update.

Android building problem

Hi, thank you for your work.
I'm trying to use the library on Android but i'm getting error on building phase:

**e: /Users/acetovi/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (121, 90): Type mismatch: inferred type is String? but String was expected
e: /Users/acetovi/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (123, 63): Type mismatch: inferred type is String? but String was expected
e: /Users/acetovi/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (174, 32): Type mismatch: inferred type is String? but String was expected

FAILURE: Build failed with an exception.**

On IOS device no problems.

Can you help me with this?
Thanks

Does not change station

So we are trying to add the ability to change stations however it is not working.


  Future<void> changestation() async{
    try {
     // await _flutterRadioPlayer.stop();
      await _flutterRadioPlayer.setUrl('http://stream.radiomedia.com.au:8015/stream', "false");
    } on PlatformException {
      print("Exception occurred while trying to register the services.");
    }
//    await _flutterRadioPlayer.play();
  }


Full code

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_radio_player/flutter_radio_player.dart';
import './screens/trackswidget.dart';
import 'about_widget.dart';

class Home extends StatefulWidget {
var playerState = FlutterRadioPlayer.flutter_radio_paused;

var volume = 0.8;

@OverRide
State createState() {
return _HomeState();
}
}

class _HomeState extends State {

bool check = true;
int _currentIndex = 0;
FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

@OverRide
void initState() {
super.initState();
initRadioService();
}

Future initRadioService() async {
try {
await _flutterRadioPlayer.init(
"DRN1", "Live", "http://stream.radiomedia.com.au:8003/stream", "false");
} on PlatformException {
print("Exception occurred while trying to register the services.");
}
//await _flutterRadioPlayer.play();
}

Future changestation() async{
try {
// await _flutterRadioPlayer.stop();
await _flutterRadioPlayer.setUrl('http://stream.radiomedia.com.au:8015/stream', "false");
} on PlatformException {
print("Exception occurred while trying to register the services.");
}
// await _flutterRadioPlayer.play();
}

final List _children = [TracksWidget(),
AboutWidget()];

@OverRide
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.black,
title: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('DRN',style: TextStyle(color: Colors.white, fontSize: 40.0),),
const Text('1', style: TextStyle(color: Colors.red, fontSize: 40.0),)
],
),
),
//body: _children[_currentIndex],
body:
Row(
children: [
Expanded(
child: new RaisedButton(
padding: const EdgeInsets.all(8.0),
textColor: Colors.white,
color: Colors.blue,
onPressed: () async { await changestation(); },

          child: new Text("Change Station"),
        ),
      ),
      Expanded(
        child: Text('Craft beautiful UIs', textAlign: TextAlign.center),
      ),
      Expanded(
        child: FittedBox(
          fit: BoxFit.contain, // otherwise the logo will be tiny
          child: const FlutterLogo(),
        ),
      ),
    ],
  ),

/* body: Center(
child: Column(
children: [
StreamBuilder(
stream: _flutterRadioPlayer.isPlayingStream,
initialData: widget.playerState,
builder:
(BuildContext context, AsyncSnapshot snapshot) {
String returnData = snapshot.data;
print("object data: " + returnData);
switch (returnData) {
case FlutterRadioPlayer.flutter_radio_stopped:
return RaisedButton(
child: Text("Start listening now"),
onPressed: () async {
await initRadioService();
});
break;
case FlutterRadioPlayer.flutter_radio_loading:
return Text("Loading stream...");
case FlutterRadioPlayer.flutter_radio_error:
return RaisedButton(
child: Text("Retry ?"),
onPressed: () async {
await initRadioService();
});
break;
default:
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
onPressed: () async {
print("button press data: " +
snapshot.data.toString());
await _flutterRadioPlayer.playOrPause();
},
icon: snapshot.data ==
FlutterRadioPlayer
.flutter_radio_playing
? Icon(Icons.pause)
: Icon(Icons.play_arrow)),
IconButton(
onPressed: () async {
await _flutterRadioPlayer.stop();
},
icon: Icon(Icons.stop))
]);
break;
}
}),
Slider(
value: widget.volume,
min: 0,
max: 1.0,
onChanged: (value) => setState(() {
widget.volume = value;
_flutterRadioPlayer.setVolume(widget.volume);
})),
Text("Volume: " + (widget.volume * 100).toStringAsFixed(0))
],
),
),
*/

  floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
  floatingActionButton: Container(
    height: 80.0,
    width: 80.0,
    child: FittedBox(
      child:FloatingActionButton(
              onPressed: () => {
                setState((){
                  if(check)
                  {
                    check = false;
                     _flutterRadioPlayer.play();
                    print("false");
                  }
                  else
                  {
                    check = true;
                     _flutterRadioPlayer.pause();
                    print("true");
                  }

                }),
                },
     child: Icon(check ? Icons.play_arrow: Icons.pause),
            backgroundColor: Colors.black,
            mini: true,
          ),
    ),

  ),
  bottomNavigationBar: BottomAppBar(
    shape: CircularNotchedRectangle(),
    child: Container(
      decoration:
      new BoxDecoration(color: new Color(0xFFFF0000)),
      height: 75,
      child: Row(
        mainAxisSize: MainAxisSize.max,
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(left: 28.0),
            icon: Icon(Icons.home),
            onPressed: () {
              setState(() {

                onTabTapped(0);
              });
            },
          ),
      /*    IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(right: 28.0),
            icon: Icon(Icons.search),
            onPressed: () {
              setState(() {
                onTabTapped(1);
              });
            },
          ),
          IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(left: 28.0),
            icon: Icon(Icons.notifications),
            onPressed: () {
              setState(() {
                onTabTapped(2);
              });
            },
          ),*/
          IconButton(
            iconSize: 30.0,
            padding: EdgeInsets.only(right: 28.0),
            icon: Icon(Icons.info_outline),
            onPressed: () {
              setState(() {
                onTabTapped(1);
              });
            },
          )
        ],
      ),
    ),
  ),// new

);

}

void onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
}

Changing stations wont play straight away

So Not sure what I am doing wrong, or if this is a known bug. But it seems that me using the following code does not change stream and play stream.

I am noticing it seem to be default to pause no matter what:

I/javaClass(25595): Attaching player as a foreground notification...
I/javaClass(25595): Received meta: ICY: title="Supernal S01E01 Part 2", url="null", rawMetadata.length="37"
I/javaClass(25595): Pushing Event: flutter_radio_paused
I/javaClass(25595): onPlayerStateChanged: PAUSED
I/javaClass(25595): Received status: flutter_radio_paused
I/javaClass(25595): Attaching player as a foreground notification...

instead I still have to manually click the play pause button.

  Future<void> changestation() async{
    try {
      await _flutterRadioPlayer.setUrl('http://stream.radiomedia.com.au:8015/stream', "false");
      await _flutterRadioPlayer.play();
    } on PlatformException {
      print("Exception occurred while trying to register the services.");
    }

  }

Full code:

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_radio_player/flutter_radio_player.dart';
import './screens/trackswidget.dart';
import 'about_widget.dart';


class Home extends StatefulWidget {
  var playerState = FlutterRadioPlayer.flutter_radio_paused;

  var volume = 0.8;

  @override
  State<StatefulWidget> createState() {
    return _HomeState();
  }
}

class _HomeState extends State<Home> {

  bool check = true;
  int _currentIndex = 0;
  FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

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


  Future<void> initRadioService() async {
    try {
      await _flutterRadioPlayer.init(
          "DRN1", "Live", "http://stream.radiomedia.com.au:8003/stream", "false");
    } on PlatformException {
      print("Exception occurred while trying to register the services.");
    }
    //await _flutterRadioPlayer.play();
  }

  Future<void> changestation() async{
    try {
      await _flutterRadioPlayer.setUrl('http://stream.radiomedia.com.au:8015/stream', "false");
      await _flutterRadioPlayer.play();
    } on PlatformException {
      print("Exception occurred while trying to register the services.");
    }

  }


  final List<Widget> _children = [TracksWidget(),
    AboutWidget()];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.black,
        title: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              const Text('DRN',style: TextStyle(color: Colors.white, fontSize: 40.0),),
              const Text('1', style: TextStyle(color: Colors.red, fontSize: 40.0),)
            ],
        ),
      ),
      //body: _children[_currentIndex],
      body:
      Row(
        children: <Widget>[
          Expanded(
            child: new RaisedButton(
              padding: const EdgeInsets.all(8.0),
              textColor: Colors.white,
              color: Colors.blue,
              onPressed: () async { await changestation(); },

              child: new Text("Change Station"),
            ),
          ),
          Expanded(
            child: Text('Craft beautiful UIs', textAlign: TextAlign.center),
          ),
          Expanded(
            child: FittedBox(
              fit: BoxFit.contain, // otherwise the logo will be tiny
              child: const FlutterLogo(),
            ),
          ),
        ],
      ),

/*    body: Center(
        child: Column(
          children: <Widget>[
            StreamBuilder(
                stream: _flutterRadioPlayer.isPlayingStream,
                initialData: widget.playerState,
                builder:
                    (BuildContext context, AsyncSnapshot<String> snapshot) {
                  String returnData = snapshot.data;
                  print("object data: " + returnData);
                  switch (returnData) {
                    case FlutterRadioPlayer.flutter_radio_stopped:
                      return RaisedButton(
                          child: Text("Start listening now"),
                          onPressed: () async {
                            await initRadioService();
                          });
                      break;
                    case FlutterRadioPlayer.flutter_radio_loading:
                      return Text("Loading stream...");
                    case FlutterRadioPlayer.flutter_radio_error:
                      return RaisedButton(
                          child: Text("Retry ?"),
                          onPressed: () async {
                            await initRadioService();
                          });
                      break;
                    default:
                      return Row(
                          crossAxisAlignment: CrossAxisAlignment.center,
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: <Widget>[
                            IconButton(
                                onPressed: () async {
                                  print("button press data: " +
                                      snapshot.data.toString());
                                  await _flutterRadioPlayer.playOrPause();
                                },
                                icon: snapshot.data ==
                                    FlutterRadioPlayer
                                        .flutter_radio_playing
                                    ? Icon(Icons.pause)
                                    : Icon(Icons.play_arrow)),
                            IconButton(
                                onPressed: () async {
                                  await _flutterRadioPlayer.stop();
                                },
                                icon: Icon(Icons.stop))
                          ]);
                      break;
                  }
                }),
            Slider(
                value: widget.volume,
                min: 0,
                max: 1.0,
                onChanged: (value) => setState(() {
                  widget.volume = value;
                  _flutterRadioPlayer.setVolume(widget.volume);
                })),
            Text("Volume: " + (widget.volume * 100).toStringAsFixed(0))
          ],
        ),
      ),
*/

      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      floatingActionButton: Container(
        height: 80.0,
        width: 80.0,
        child: FittedBox(
          child:FloatingActionButton(
                  onPressed: () => {
                    setState((){
                      if(check)
                      {
                        check = false;
                         _flutterRadioPlayer.play();
                        print("false");
                      }
                      else
                      {
                        check = true;
                         _flutterRadioPlayer.pause();
                        print("true");
                      }

                    }),
                    },
         child: Icon(check ? Icons.play_arrow: Icons.pause),
                backgroundColor: Colors.black,
                mini: true,
              ),
        ),

      ),
      bottomNavigationBar: BottomAppBar(
        shape: CircularNotchedRectangle(),
        child: Container(
          decoration:
          new BoxDecoration(color: new Color(0xFFFF0000)),
          height: 75,
          child: Row(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              IconButton(
                iconSize: 30.0,
                padding: EdgeInsets.only(left: 28.0),
                icon: Icon(Icons.home),
                onPressed: () {
                  setState(() {

                    onTabTapped(0);
                  });
                },
              ),
          /*    IconButton(
                iconSize: 30.0,
                padding: EdgeInsets.only(right: 28.0),
                icon: Icon(Icons.search),
                onPressed: () {
                  setState(() {
                    onTabTapped(1);
                  });
                },
              ),
              IconButton(
                iconSize: 30.0,
                padding: EdgeInsets.only(left: 28.0),
                icon: Icon(Icons.notifications),
                onPressed: () {
                  setState(() {
                    onTabTapped(2);
                  });
                },
              ),*/
              IconButton(
                iconSize: 30.0,
                padding: EdgeInsets.only(right: 28.0),
                icon: Icon(Icons.info_outline),
                onPressed: () {
                  setState(() {
                    onTabTapped(1);
                  });
                },
              )
            ],
          ),
        ),
      ),// new

    );
  }

  void onTabTapped(int index) {
    setState(() {
      _currentIndex = index;
    });
  }
}

PendingIntent Flag missing in Android > 31

In Android 31 i'm getting an error, that the PendingIntent needs a flag.
I tried to fix it by adding "PendingIntent.FLAG_IMMUTABLE", but i had no luck.
Is there a solution for this problem?

This is the error log:

Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
โœ“  Built build/app/outputs/flutter-apk/app-debug.apk.
Connecting to VM Service at ws://127.0.0.1:58465/2GRamNiEcaY=/ws
I/javaClass(10003): Calling to method: initService
I/javaClass(10003): start service invoked
I/javaClass(10003): Attempting to initialize service...
I/javaClass(10003): Service not bound, binding now....
I/javaClass(10003): Mapping method call to player item object
I/javaClass(10003): Firing up service. (onStartCommand)...
I/javaClass(10003): LocalBroadCastManager Received...
W/t.studiopiu.vm(10003): Accessing hidden method Landroid/media/AudioTrack;->getLatency()I (unsupported, reflection, allowed)
I/ExoPlayerImpl(10003): Init 66048fd [ExoPlayerLib/2.13.1] [emulator64_arm64, sdk_gphone64_arm64, Google, 31]
I/javaClass(10003): Pushing Event: flutter_radio_stopped
I/javaClass(10003): onPlayerStateChanged: STOPPED
I/javaClass(10003): Pushing Event: flutter_radio_loading
I/javaClass(10003): onPlayerStateChanged: LOADING
D/CompatibilityChangeReporter(10003): Compat change id reported: 160794467; UID 10146; state: ENABLED
D/AndroidRuntime(10003): Shutting down VM
E/AndroidRuntime(10003): FATAL EXCEPTION: main
E/AndroidRuntime(10003): Process: com.example.app, PID: 10003
E/AndroidRuntime(10003): java.lang.RuntimeException: Unable to start service me.sithiramunasinghe.flutter.flutter_radio_player.core.StreamingCore@d40233e with Intent { cmp=com.example.app/me.sithiramunasinghe.flutter.flutter_radio_player.core.StreamingCore (has extras) }: java.lang.IllegalArgumentException: com.example.app: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
E/AndroidRuntime(10003): Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
E/AndroidRuntime(10003): 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4661)
E/AndroidRuntime(10003): 	at android.app.ActivityThread.access$2000(ActivityThread.java:247)
E/AndroidRuntime(10003): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2095)
E/AndroidRuntime(10003): 	at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(10003): 	at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime(10003): 	at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime(10003): 	at android.app.ActivityThread.main(ActivityThread.java:7842)
E/AndroidRuntime(10003): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(10003): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime(10003): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E/AndroidRuntime(10003): Caused by: java.lang.IllegalArgumentException: com.example.app: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
E/AndroidRuntime(10003): Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
E/AndroidRuntime(10003): 	at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
E/AndroidRuntime(10003): 	at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
E/AndroidRuntime(10003): 	at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
E/AndroidRuntime(10003): 	at com.google.android.exoplayer2.ui.PlayerNotificationManager.createBroadcastIntent(PlayerNotificationManager.java:1395)
E/AndroidRuntime(10003): 	at com.google.android.exoplayer2.ui.PlayerNotificationManager.createPlaybackActions(PlayerNotificationManager.java:1351)
E/AndroidRuntime(10003): 	at com.google.android.exoplayer2.ui.PlayerNotificationManager.<init>(PlayerNotificationManager.java:658)
E/AndroidRuntime(10003): 	at com.google.android.exoplayer2.ui.PlayerNotificationManager.<init>(PlayerNotificationManager.java:568)
E/AndroidRuntime(10003): 	at com.google.android.exoplayer2.ui.PlayerNotificationManager.createWithNotificationChannel(PlayerNotificationManager.java:521)
E/AndroidRuntime(10003): 	at me.sithiramunasinghe.flutter.flutter_radio_player.core.StreamingCore.onStartCommand(StreamingCore.kt:248)
E/AndroidRuntime(10003): 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4643)
E/AndroidRuntime(10003): 	... 9 more
I/Process (10003): Sending signal. PID: 10003 SIG: 9
Lost connection to device.
Exited (sigterm)

I tried this, but had no luck with it:
(android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore)

override fun createCurrentContentIntent(player: Player): PendingIntent {
 var intent = Intent(this@StreamingCore, activity!!.javaClass)
 var contentPendingIntent = PendingIntent.getActivity(this@StreamingCore, 0, intent, PendingIntent.FLAG_IMMUTABLE );
   return contentPendingIntent;
   }

Device: Pixel 4 API 31 - Android 12.0

[โœ“] Flutter (Channel beta, 2.9.0-0.1.pre, on macOS 12.1 21C52 darwin-arm, locale de-DE)
[โœ“] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[โœ“] Xcode - develop for iOS and macOS (Xcode 13.1)
[โœ“] Chrome - develop for the web
[โœ“] Android Studio (version 2020.3)
[โœ“] VS Code (version 1.63.2)
[โœ“] Connected device (3 available)

I'm facing this error and can you help me something what was wrong?

D/AndroidRuntime(31948): Shutting down VM
E/AndroidRuntime(31948): FATAL EXCEPTION: main
E/AndroidRuntime(31948): Process: com.nwt.shwe_fm, PID: 31948
E/AndroidRuntime(31948): java.lang.NoSuchMethodError: No static method getLooper()Landroid/os/Looper; in class Lc/c/a/b/j2/j0; or its super classes (declaration of 'c.c.a.b.j2.j0' appears in /data/app/com.nwt.shwe_fm-2/base.apk)
E/AndroidRuntime(31948): at c.c.a.b.b2.a.a.(:453)
E/AndroidRuntime(31948): at me.sithiramunasinghe.flutter.flutter_radio_player.core.StreamingCore.onStartCommand(:210)
E/AndroidRuntime(31948): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3043)
E/AndroidRuntime(31948): at android.app.ActivityThread.access$2300(ActivityThread.java:153)
E/AndroidRuntime(31948): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
E/AndroidRuntime(31948): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(31948): at android.os.Looper.loop(Looper.java:154)
E/AndroidRuntime(31948): at android.app.ActivityThread.main(ActivityThread.java:5527)
E/AndroidRuntime(31948): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(31948): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
E/AndroidRuntime(31948): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
E/MQSEventManagerDelegate(31948): failed to get MQSService.
I/Process (31948): Sending signal. PID: 31948 SIG: 9

Getting issue when run in IOS Simulator

Its perfectly working in Android device

I am adding issue below with complete description.

Notification received with event name: flutter_radio_playing
Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Users/macbook/Documents/FlutterSetup/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.4/ios/Classes/SwiftFlutterRadioPlayerPlugin.swift, line 100
2020-05-14 16:23:16.608359+0530 Runner[48848:409859] Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Users/macbook/Documents/FlutterSetup/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.4/ios/Classes/SwiftFlutterRadioPlayerPlugin.swift, line 100

Null can not be a value of a non-null type AudioFocusRequest

Android Build faild with following error:

...../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.1.0/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (62, 51): Null can not be a value of a non-null type AudioFocusRequest

Getting 'fatal error: Unexpectedly found nilwhile unwrapping an Optional value' in iOS at runtime

Error: 'fatal error: Unexpectedly found nil while unwrapping an Optional value: file /flutter_radio_player-1.0.4/ios/Classes/SwiftFlutterRadioPlayerPlugin.swift, line 100'

Flutter version: 1.18.0-6.0.pre.80 (master channel)

code in Flutter:
import 'package:flutter/material.dart';
import 'package:flutter_radio_player/flutter_radio_player.dart';
main() => runApp(RadioApp());
class RadioApp extends StatefulWidget {
@OverRide
_RadioAppState createState() => _RadioAppState();
}

class _RadioAppState extends State {
FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

String url = '';

@OverRide
void initState() {
print('initializing');
super.initState();
audioStart();
}

Future audioStart() async {
await _flutterRadioPlayer.init(
"Flutter Radio Example", "Live", url, "true");
}

@OverRide
Widget build(BuildContext context) {
return MaterialApp(
title: 'SHOUT Radio',
debugShowCheckedModeBanner: false,
home: SafeArea(child: Scaffold()));
}
}

Upgraded to 1.0.7 and got error

So I went to upgrade from 1.0.5 to 1.0.7 and got this error.

e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.5/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt: (23, 14): Redeclaration: FlutterRadioPlayerPlugin
e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.5/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (33, 7): Redeclaration: StreamingCore
e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt: (23, 14): Redeclaration: FlutterRadioPlayerPlugin
e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/FlutterRadioPlayerPlugin.kt: (35, 22): Cannot access 'buildEngine': it is private in 'FlutterRadioPlayerPlugin'
e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (29, 93): Unresolved reference: broadcastChangedMetaDataName
e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (34, 7): Redeclaration: StreamingCore
e: /home/russellharrower/.pub-cache/hosted/pub.dartlang.org/flutter_radio_player-1.0.7/android/src/main/kotlin/me/sithiramunasinghe/flutter/flutter_radio_player/core/StreamingCore.kt: (47, 50): Unresolved reference: broadcastChangedMetaDataName

FAILURE: Build failed with an exception.

This is a copy of my pubsec.yaml

name: drn1
description: Listen to the hottest indie station in Australia as well as get access to all our shows all in one place.

# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.3
  http: ^0.12.2
  audio_service: ^0.14.1
  flutter_radio_player: ^1.0.7
  async: ^2.2.0
  firebase_core: ^0.5.0


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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.