Created
November 5, 2021 22:51
-
-
Save morphingcoffee/c349057045ab298d4a3eabc7603046db to your computer and use it in GitHub Desktop.
Flutter Web fullscreen feature helper, using 'universal_html' package.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:universal_html/js.dart' as js; | |
import 'package:universal_html/html.dart' as html; | |
void example() { | |
_enterFullscreen(html.document.documentElement); | |
_exitFullscreen(html.document); | |
} | |
/// Flutter Web: Enter Fullscreen on Firefox, Chrome, Opera, Safari, etc. | |
/// Based on https://stackoverflow.com/questions/29714889/how-to-request-fullscreen-in-compiled-dart | |
/// and https://github.com/dart-lang/sdk/issues/4136 | |
void _enterFullscreen(Object? element) { | |
if (element == null) return; | |
var elem = js.JsObject.fromBrowserObject(element); | |
if (elem.hasProperty("requestFullscreen")) { | |
elem.callMethod("requestFullscreen"); | |
} else { | |
List<String> vendors = ['moz', 'webkit', 'ms', 'o']; | |
for (String vendor in vendors) { | |
String vendorFullscreen = "${vendor}RequestFullscreen"; | |
if (vendor == 'moz') { | |
vendorFullscreen = "${vendor}RequestFullScreen"; | |
} | |
if (elem.hasProperty(vendorFullscreen)) { | |
elem.callMethod(vendorFullscreen); | |
return; | |
} | |
} | |
} | |
} | |
/// Flutter Web: Exit Fullscreen on Firefox, Chrome, Opera, Safari, etc. | |
/// Based on https://stackoverflow.com/questions/29714889/how-to-request-fullscreen-in-compiled-dart | |
/// and https://github.com/dart-lang/sdk/issues/4136 | |
void _exitFullscreen(Object? element) { | |
if (element == null) return; | |
var elem = js.JsObject.fromBrowserObject(element); | |
if (elem.hasProperty("exitFullscreen")) { | |
elem.callMethod("exitFullscreen"); | |
} else { | |
List<String> vendors = ['moz', 'webkit', 'ms', 'o']; | |
for (String vendor in vendors) { | |
String vendorFullscreen = "${vendor}ExitFullscreen"; | |
if (vendor == 'moz') { | |
vendorFullscreen = "${vendor}CancelFullScreen"; | |
} | |
if (elem.hasProperty(vendorFullscreen)) { | |
elem.callMethod(vendorFullscreen); | |
return; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment