43 lines
1.5 KiB
Dart
43 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'platform_detector.dart';
|
|
|
|
class OrientationHelper {
|
|
/// Restores default orientation preferences based on device type.
|
|
///
|
|
/// For phones: Locks to portrait-only (up and down)
|
|
/// For tablets/desktop: Allows all orientations
|
|
///
|
|
/// This should be called when leaving full-screen experiences like
|
|
/// the video player to restore the app's default orientation behavior.
|
|
static void restoreDefaultOrientations(BuildContext context) {
|
|
final isPhone = PlatformDetector.isPhone(context);
|
|
|
|
if (isPhone) {
|
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
|
|
} else {
|
|
SystemChrome.setPreferredOrientations([
|
|
DeviceOrientation.portraitUp,
|
|
DeviceOrientation.portraitDown,
|
|
DeviceOrientation.landscapeLeft,
|
|
DeviceOrientation.landscapeRight,
|
|
]);
|
|
}
|
|
}
|
|
|
|
/// Sets orientation to landscape-only mode.
|
|
///
|
|
/// Used by the video player to force landscape orientation during playback.
|
|
static void setLandscapeOrientation() {
|
|
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
|
|
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
|
|
}
|
|
|
|
/// Restores edge-to-edge system UI mode.
|
|
///
|
|
/// Should be called when exiting full-screen mode.
|
|
static void restoreSystemUI() {
|
|
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
|
|
}
|
|
}
|