🤸♂️
flutter で画面の向きを変える方法、向きを変えたように見せる方法
TL;DR
-
SystemChrome.setPreferredOrientations
を使うことで画面の向きを設定できる-
runApp
する前に指定しておくことでアプリとしての向きを固定することも可 - How to change screen orientation in flutter ? | Coding Ninja
-
-
RotatedBox
やRotationTransition
などを使って Widget を回転させることでスクロールバーを出さない程度の情報量であれば、擬似的に画面の向きを変えたように見せることも可- AppBar は縦画面のままで、body は横にしして、とかもできる
- それをやりたいか? はまた別の話……
- Flutter - video_player fullscreen | Stack Overflow
- RotatedBox class | Flutter
- RotationTransition class | Flutter
- AppBar は縦画面のままで、body は横にしして、とかもできる
画面の向きを設定する
import 'package:flutter/services.dart'; // 必要
// なんかこんな感じ。`_landscape` の変更は各々やりたいところで変更してもらえれば。
// 三項演算子 だとサンプルとして読みにくいかなと思って例は switch にしたけど読みやすいかは微妙ですね……
void changeLandscape() {
switch (_landscape) {
case false:
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitDown, DeviceOrientation.portraitUp]);
break;
case true:
// 右辺を上にしたいときはこう。
// 左辺を上にしたいときは DeviceOrientation.landscapeLeft を指定してやる
SystemChrome.setPreferredOrientations(
[DeviceOrientation.landscapeRight]);
break;
}
}
画面の向きを固定する
- 【Flutter】画面を縦/横に固定する方法 | ryohtarot/main.dart | Gist
- iPad は別途対応が必要みたい
- setPreferredOrientations not working in iPad #27235 | flutter / flutter | GitHub
- https://github.com/flutter/flutter/issues/27235
RotatedBox で回転させる
import 'package:flutter/material.dart';
...略
// なんかこんな感じ。そのままですね……
// YourWidget は自分の必要な Widget を入れてやる
// `_landscape` の変更は各々やりたいところで変更してもらえれば。
Widget build(BuildContext context) {
return RotatedBox(
child: YourWidget(
),
quarterTurns: _landscape ? 1 : 0);
...略
- Flutter - video_player fullscreen | Stack Overflow
Discussion