How to know when the app is loaded in Flutter? - flutter

In my flutter app I'm playing an animation. And I want to start the playback only after all the widgets on the page have loaded. Essencially I'm looking for the JS equivalnat of window.onload in flutter. Right now the animation starts as soon as it can and the result it that when the app lunches I see a white screen while the app is loading for a few seconds and when the app is finally loaded the animation is already half way through the playback.
Is there a signal or event in flutter that will let me know that the app has loaded?

In a widget you can use
WidgetsBinding.instance.addPostFrameCallback((_){
//stuff
})
If you put this in your initState the callback will be called after the first frame is rendered, if that's what you need.

Related

Flutter Video Player appears on second time webpage loads and overlay buttons not functional

Link: Website
Problem: The video on the front page below the video banner does not render until you navigate away from the page and return back. When the video finally appears and plays, the play button does not work. Is there a way to have the video appear on first appearance and have the overlay work as expected.
I am using the latest video_player widget to play the video. Other videos I have implemented work just fine.
When I debug my flutter web application, the application pauses at videoController.play() inside initState(). I continue execution to see if there is was an exception, but nothing new shows in debug console.
One solution I found to work is by setting the volume to 0 then starting the video.
This allows the video to play, but the overlay still not functioning as expected, so I just removed it. For now it works, but still wondering on how the overlay can be implemented.

How to implement an expanding minplayer in flutter using just audio

I am working on a simple music player app using the just_audio plugin. I want to have a small miniplayer at the bottom of the screen in the app. It will have basic song info and controls to play and pause. The basic deisgn is -:
when the user clicks on the minplayer I want it to expand into a full screen size and show additional controls like a progress bar, buttons to control the player etc. I tried to do this by passing the audioplayer as a navigator argument but got the error which said that only one instance of player is accepted at a time. Also the big screen should have a button to collapse the player
Please help

How to stop the video player from playing when moving from one page to another

I am using video_player package for displaying a video. I have written the video player inside separate class. The issue is, during the video playing, when I try to close the page by pressing back button, a bottomsheet will be presented on the screen. After clicking on the bottom sheet, the user will be navigated to another page. During this process, the audio from the video_player is heard.
If we are not using bottomsheet and directly pressing backbutton, the video_player is properly disposed.
Have anyone encountered this scenario before?
Try calling pop() before navigating to new page from bottom sheet.
Keep me posted.

Flutter Native SplashScreens Background processes

I have created SplashScreens for my Flutter app for both iOS and Android using the native way which is editing the LaunchScreen.storyboard and it is working currently when I run my app but the SplashScreen does not hold long enough and is there a way to programmatically hide the native splashscreen in dart after I am done with some data processing and logic?
The solutions I found online are all flutter apps with SplashScreen that is build using flutter widgets and not the native way...
Even if you build the splash screen if Flutter, you still need to set one in via XCode. Otherwise, the app loads with a momentary plan white screen and Apple rejects it.
If you want to extend the time till the moment data process is over, then you will have to make a replica of LaunchScreen.storyboard in Flutter. The data processing and logic are written in Flutter. There's no way it can tell LaunchScreen.storyboard "I am done". What you can do is though, make a splash screen in Flutter which will look like LaunchScreen.storyboard. And once the data processing is done, you can navigate the user to the desired screen. Since the two screens are same, use won't see the difference and the app will smoothly show the next screen.
Just a word of caution - be careful about extending the timing of launch screen. Apple may reject the app. See if something can be done after the screen load. You can use flutter after layout package for this or the below line will do the trick :
WidgetsBinding.instance
.addPostFrameCallback((_) => myFunction(context));
This thread may help you to delay the screen for XX seconds.

How can I fix the delay of flutter app during launch?

When I run flutter app it delays for few seconds shows just white screen and then the main page is shown. How can i fix it
There is an entry in the docs about the launch screen.
https://flutter.io/docs/development/ui/assets-and-images#updating-the-launch-screen
Basically you can provide an image to be shown while flutter loads. The framework is not ready at that point though, so this is done on the platform side.