web-dev-qa-db-fra.com

Flutter: comment empêcher les changements d'orientation de l'appareil et forcer le portrait?

Je voudrais éviter que mon application change d’orientation et obliger la mise en page à coller à "portrait".

Dans la partie principale, je mets:

void main(){
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown
  ]);
  runApp(new MyApp());
}

mais lorsque j'utilise les boutons de rotation du simulateur Android, la disposition "suit" la nouvelle orientation de l'appareil ...

Comment pourrais-je résoudre ceci?

Merci

9
boeledi

Placez le SystemChrome.setPreferredOrientations dans la méthode Widget build().

Exemple:

  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);
      return new MaterialApp(...);
    }
  }
19
Mason

@boeledi, si vous souhaitez «verrouiller» l'orientation de l'appareil et ne pas lui permettre de changer lorsque l'utilisateur fait pivoter son téléphone, vous pouvez le définir facilement comme suit:

// This did not work as requirement
void main() {
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
  runApp(new MyApp());
}

Vous devez attendre quesetPreferredOrientationssoit terminé, puis lancer l'application

// This will works always for lock screen Orientation.
void main() {
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
    .then((_) {
      runApp(new MyApp());
    });
}
8
TejaDroid

La méthode 'setPreferredOrientations' renvoie un objet Future. Selon la documentation, un avenir représente une valeur qui sera disponible quelque part dans le futur. C'est pourquoi vous devez attendre jusqu'à ce qu'il soit disponible, puis passer à l'application. Par conséquent, on utilisera la méthode "then", qui, par définition, "enregistre les rappels à appeler lorsque le futur est terminé". Par conséquent, vous utiliserez ce code:

  void main() {
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]).then((_) {
      runApp(new App());
    });
   }

De plus, le fichier suivant doit être importé:

'package: flutter/services.Dart'

1
Ara Mkrtchyan

Pour iOS, appeler SystemChrome.setPreferredOrientations() ne fonctionne pas pour moi et je devais le modifier dans le projet Xcode .

enter image description here

1
Hejazi