I tested out the AppLifeCycleState
on flutter web and it didn't work while it worked on mobile platforms.
This is an issue that is being worked on.
I was wondering if anyone knew any workarounds or packages which could do this?
Here is my workaround
import 'dart:html';
import 'package:flutter/foundation.dart';
// inside your State class
@override
void initState() {
super.initState();
if (kIsWeb) {
window.addEventListener('focus', onFocus);
window.addEventListener('blur', onBlur);
} else {
WidgetsBinding.instance!.addObserver(this);
}
}
@override
void dispose() {
if (kIsWeb) {
window.removeEventListener('focus', onFocus);
window.removeEventListener('blur', onBlur);
} else {
WidgetsBinding.instance!.removeObserver(this);
}
super.dispose();
}
void onFocus(Event e) {
didChangeAppLifecycleState(AppLifecycleState.resumed);
}
void onBlur(Event e) {
didChangeAppLifecycleState(AppLifecycleState.paused);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
// do your thing
}
Basically you hook into the browser's visibility API and invoke the life cycle callback yourself.
See also How to detect if flutter website is running in the background of browser?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With