Detect window closing action flutter desktop - flutter

I am working on flutter desktop application and want to show alert dialog before closing window. Could not get any information about detecting window closing action.
Can anyone tell me how to do this. Thankx.

You can do it using the existing flutter_window_close package. Check out the example here.
This plugin lets your Flutter app a chance to confirm if the user wants to close your app. It works on desktop platforms including Windows, macOS and Linux.
Try to explore as well bitsdojo_window.

Related

Flutter Detect Notification Tray Pulldown

I'm trying to implement a feature based on the background/foreground status of a Flutter app.
Does anyone know of a way to detect if the notification/system try on a device is pulled down over the app?
Thanks.
Welcome to SOF
You can detect this using special permission in Android (https://developer.android.com/reference/android/Manifest.permission#EXPAND_STATUS_BAR).
But you need native code to run in Flutter.
There is a similar (almost) package out there, you may fork it:
https://pub.dev/packages/notification_shade

how to show dialog without needed open app

I'm looking for package or anyway to show popup, dialog or modal without needed open my app like . local notification but I don't want use local notification for customization , is there in flutter something like that ?
On Android, you can use a plugin that uses SYSTEM_ALERT_WINDOW
such that it utilizes the "Draw over other apps" permission in order to do what you describe.
An example plugin that does this is system_alert_window.
On iOS, this isn't possible. Some plugins will notify instead on iOS.

Close browser window and open PWA once PWA installed

I have Chrome installing my PWA on Android - once it's installed I'd like to automatically close the browser window it was installed from, and open the PWA (so the user doesn't continue in the browser window, thinking they're using the PWA) - is this possible?
i was looking for a similar solution and have not yet found a way to do that. I try to describe my findings so far:
CLOSING THE BROWSER WINDOW:
as described in this answer window.close() can only be called on windows/tabs that the script opened itself. Some possible workarounds are being discussed there.
OPENING THE PWA RIGHT AFTER INSTALLATION:
Google describes in their WebApk Fundamentals Article it as follows:
When a Progressive Web App is installed on Android, it will register a set of intent filters for all URLs within the scope of the app. When a user clicks on a link that is within the scope of the app, the app will be opened, rather than opening within a browser tab.
I was hoping that would work also right after the installation/Adding to homescreen from the still open browser window.
Based on testing with two Android devices it seems as if at the moment the user has to manually open the PWA from the homescreen once for chrome/android to interpret the scope of the web apps manifest.json as intend to open the page in standalone.
This is sad for even iOS seems to handle that different.
Maybe I am overlooking something in the Google Article? I also do not fully understand androids intent API - so maybe there is some way to still achieve that (?)
Based from this blog post:
When the PWA is installed, it will appear in the home screen, in the
app launcher, in Settings and as any other first-class citizen app in
the OS, including information on battery and space used in the system.
There's a tracking event when the user opens the app from the home screen. That means the user has clicked the app's icon or, on Android with WebAPK support, also clicked on a link pointing to the PWA scope and need to close the browser.
start_url: '/?utm_source=standalone&utm_medium=pwa'
Also, the following script leaves us a boolean stating if the user is currently in a browser (true) or a standalone app mode (false)
var isPWAinBrowser = true;
// replace standalone with fullscreen or minimal-ui according to your manifest
if (matchMedia('(display-mode: standalone)').matches) {
// Android and iOS 11.3+
isPWAinBrowser = false;
} else if ('standalone' in navigator) {
// useful for iOS < 11.3
isPWAinBrowser = !navigator.standalone;
}
I had this problem on Android with Chrome. The change that made the difference is adding "target='_blank'" to the link. It looks like:
window.addEventListener('appinstalled', function(event){
setTimeout(function(){
presentToUser("<a href='https://myhostname.com' target='_blank'>Go to App</a>")
}, 10000)}
});
The ten second timeout is to give Android the time to set up the App on the home page.
I had made that adjustment earlier; possibly I can remove it?
But setting the target was what made this work.
The App opens over the top of Chrome, obscuring it.
So closing the browser is not immediately required but is recommended.
In the new versions of chrome, after installation in android it associate all the links in the "scope" to the PWA application, if you try to open a link in your chrome browser it open directly in the application.
hope that will answer your question

Select a calendar dialog window from console app

I have a console app written with Swift to add events and reminders. I need be able to show 'select calendar' dialog from it. Is there any standar way to show this dialog or it needs to be created manually using NSAlert?
Sorry, kind of newbie in mac development, need this console app to interact with macos through electron app.

is there any api to make a shortcut of chrome standalone app to a desktop

normally what happens when you install an app is that it creates a shortcut from where you can launch it on desktop or start menu. However, chrome apps for now are places in chrome app launcher that is packed with all other chrome apps. It's all good and fine. But is there a way to place my app on desktop with user's consent if need be.
There is a way to do it manually. Like if user right clicks on the app in chrome app launcher and click create shortcut which has checkboxes showing places where shortcuts are going to be created ex: desktop, startmenu...
Without a icon of your app on desktop it still doesn't feel like a standalone app.
You can check out the chrome.management.createAppShortcut API that is added recently. Now it's only available on the dev channel:
chrome.management.createAppShortcut("app_id");
There is no way to do this. Users can also drag their app from the app launcher to the desktop to create a shortcut.
An API to prompt the user for this isn't something we're likely to support. Personally I think users would find it annoying, as it is simple and easy to create shortcuts where they want.
If you disagree please file a feature request at http://crbug.com. It would be there is some action we could take, e.g. educate users better that they can create shortcuts, but crbug.com is a better place to discuss.