Lors du développement d'une application, nous avons parfois besoin de forcer l'orientation de l'écran en portrait ou paysage afin que l'utilisateur ait une expérience enrichie.
Pour cela, il existe une méthode simple qui permet d'initialiser l'orientation de l'écran et de pouvoir la changer si vous le souhaiter pour une vue particulière
Initialiser l'orientation de l'écran
Placez-vous dans votre fichier
main.dart
là où vous initialisez votre projet.
Lors de l'initialisation, définissez simplement l'orientation de votre écran souhaitée lors du lancement de la function runApp.
Par exemple :
Future<void> main() async {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]).then((_) {
runApp(MyApp());
});
}
class MyApp extends StatelessWidget {
...
}
Dans ce cas, l'utilisateur aura son écran bloqué en mode
portrait
et ce, même si il passe sont écran en mode paysage.
Vous pouvez cumuler les paramètres avec, par exemple, le mode
portrait
et
landscape
:
Future<void> main() async {
SystemChrome.setPreferredOrientations(
[
DeviceOrientation.portraitUp,
DeviceOrientation.landscapeLeft
]).then((_) {
runApp(MyApp());
});
}
class MyApp extends StatelessWidget {
...
}
4 paramètres sont disponibles :
DeviceOrientation.portraitUp > Mode portrait normal
DeviceOrientation.portraitDown > Mode portrait avec téléphone retourné
DeviceOrientation.landscapeLeft > Paysage en tournant son écran à 90° à gauche
DeviceOrientation.landscapeRight > Paysage en tournant son écran à 90° à droite
Je souhaite modifier l'orientation pour un écran spécifique
Cela se passe l'
initState
d'un
StatefulWidget
.
En effet, il suffit de faire la déclaration comme suit par exemple et ne pas oublier de réinitialiser l'état en quittant cet écran dans le
dispose
.
Dans notre exemple ci-dessous, on autorise le mode portrait et le mode paysage à gauche et à droite :
@override
void initState() {
super.initState();
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.landscapeRight,
DeviceOrientation.landscapeLeft
]);
}
@override
void dispose() {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
super.dispose();
}