124 votes

Flutter : Comment définir et verrouiller l'orientation de l'écran à la demande

Sur l'une de mes pages flutter, j'ai besoin que l'écran soit en mode paysage et verrouillé afin qu'il ne puisse pas basculer en mode portrait, mais seulement sur cette page. J'ai donc besoin d'une façon d'activer cette fonction en temps réel. Quelqu'un sait-il comment faire?

Je voudrais qu'il tourne en mode paysage-gauche ou paysage-droit, mais pas en mode portrait.

3voto

Himanshu Mahajan Points 950

Importer le package services.dart et ajouter le code suivant pour verrouiller l'orientation de l'appareil en mode portraitUp :

 import 'package:flutter/services.dart';

 main() {
     WidgetsFlutterBinding.ensureInitialized();
     SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
     runApp(MyHomePage());
 }

0 votes

WidgetsFlutterBinding.ensureInitialized(); a fait fonctionner cette solution pour moi. Belle trouvaille!

2voto

Samir Rahimy Points 139

Import services.dart et votre fonction void main devrait ressembler à :

void main(){

    WidgetsFlutterBinding.ensureInitialized();
    SystemChrome.setPreferredOrientations(
       [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown])
       .then((_){
           runApp(MyApp());
       }
    );
}

2voto

Ahmad Khan Points 26

Simple way to lock screen orientation in whole app

  • Ajoutez import 'package:flutter/services.dart'; au début du fichier main.dart.

  • Créez la méthode SystemChrome.setPreferredOrientations(); pour désactiver la rotation de l'écran dans la zone de construction du widget de la classe MyApp juste avant la partie return.

  • Spécifiez l'orientation en utilisant [DeviceOrientation.] dans les arguments de la méthode.

Utilisez l'un des suivants à la place de :

  1. portraitUp
  2. portraitDown
  3. landscapeLeft
  4. landscapeRight

Example Code:

import 'package:flutter/material.dart';

import 'package:flutter/services.dart' ;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

      SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
      ]);

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
        title: Text("Screen Orientation"),
        ),
        body: Container(
        ),
      ),
    );
  }
}

1voto

Sergiy Vergun Points 41

Vous pouvez utiliser orientation_helper pour cela https://pub.dev/packages/orientation_helper. Son objectif principal est de définir l'orientation pour chaque écran dans une application.

1voto

Urvish Patel Points 135

Important for iOS

  • Activer l'orientation dans le fichier info.plist. Par exemple entrer la description de l'image ici

Étapes

  • Définir l'orientation dans le fichier main.dart. Dans mon cas, mon application ne prend en charge que le mode portrait sauf pour un écran, donc je dois définir le mode portrait en premier. Par exemple

    SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,DeviceOrientation.portraitDown,]);

  • Ajouter le code suivant dans cet écran que vous souhaitez faire pivoter.

    void initState() { super.initState(); SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeRight, DeviceOrientation.landscapeLeft, ]); } @override dispose(){ SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); super.dispose(); }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X