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
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(...);
}
}
@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 que
setPreferredOrientations
soit terminé, puis lancer l'application
// This will works always for lock screen Orientation.
void main() {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((_) {
runApp(new MyApp());
});
}
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'
Pour iOS, appeler SystemChrome.setPreferredOrientations()
ne fonctionne pas pour moi et je devais le modifier dans le projet Xcode .