Flutter SystemChrome과 RotatedBox가 동시에 사용되었을 때 혼란스러워서 메모
5959 단어 Flutter
우선은 RotatedBox만으로 검증
코드
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; // rootBundle
void main() {
runApp(MyApp());
}
// MyApp ウィジェットクラス
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.light(),
home: const RotatedBox(
// ここをいじる
quarterTurns: 0,
child: Text('Hello World!'),
)
);
}
}
quarterTurns가 0이므로, 아직 회전은 하지 않고 통상의 hello world이므로 이런 느낌
![](https://s1.md5.ltd/image/a9812f2eba8709a16c1440cbf1344073.png)
quarterTurns를 0에서 1로 변경하면 이런 느낌, 옆으로 기울이면 딱 보기 쉬워진다. 90도 각도를 회전하는 것처럼 보입니다.
![](https://s1.md5.ltd/image/662ee9d9554d68ab7984eee13bc33a96.png)
quarterTurns를 1에서 2로 변경하면 이런 느낌 1에서 90도, 0에서 180도 바꾼 것 같은 각도가 된다.
![](https://s1.md5.ltd/image/5cc527d56cc58cbd2f7924112bcbb3a5.png)
quarterTurns를 2에서 3으로 변경하면 마찬가지로 2의 이미지에서 90도, 0에서 세면 270도 회전시킨 hello world가 표시된다.
결론
quarterTurns를 1 올릴 때마다 90도 회전하게 된다.
다음에 SystemChrome과 RotatedBox를 동시에 사용했을 때의 검증
다음은 SystemChrome.setPreferredOrientations를 오른쪽으로 향하고 있을 때 RotatedBox에 의해 UI에 어떤 변화가 생기는지 검증한다. 결론부터 말하면 상당히 심플하고, SystemChrome.setPreferredOrientations로 오른쪽을 향한 뒤 RotatedBox의 quarterTurns의 처리가 달린다.
코드
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeRight,
]);
runApp(MyApp());
}
// MyApp ウィジェットクラス
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.light(),
home: const RotatedBox(
quarterTurns: 0,
child: Text('Hello World!'),
)
);
}
}
SystemChrome은 hot reload로 업데이트되지 않았으므로 다시 빌드
위의 코드라면 SystemChrome에서 widget 모두가 오른쪽으로 회전하므로 아래 그림과 같이 된다.
quarterTurns는 0이므로 RotatedBox의 회전 처리는 아직 수행되지 않았습니다.
![](https://s1.md5.ltd/image/d5bd0544aab04c57c04a5256b54c241c.png)
quarterTurns를 1로 변경, 이것도 간단하게 생각하면 좋고, SystemChrome에서 오른쪽을 향한 hello world를 90도 회전시킨다고 하는 이미지로 ok, 이미지는 아래와 같은 느낌
![](https://s1.md5.ltd/image/ed0642ffbfa5c4f8b7b86bc23170915a.png)
마찬가지로 QuarterTurns : 2라면 오른쪽 방향에서 180도, 3이라면 오른쪽 방향에서 270도 회전하는 이미지가 된다.
Reference
이 문제에 관하여(Flutter SystemChrome과 RotatedBox가 동시에 사용되었을 때 혼란스러워서 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/masal9pse/items/c5d5c05d2cbe25525d80
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; // rootBundle
void main() {
runApp(MyApp());
}
// MyApp ウィジェットクラス
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.light(),
home: const RotatedBox(
// ここをいじる
quarterTurns: 0,
child: Text('Hello World!'),
)
);
}
}
다음은 SystemChrome.setPreferredOrientations를 오른쪽으로 향하고 있을 때 RotatedBox에 의해 UI에 어떤 변화가 생기는지 검증한다. 결론부터 말하면 상당히 심플하고, SystemChrome.setPreferredOrientations로 오른쪽을 향한 뒤 RotatedBox의 quarterTurns의 처리가 달린다.
코드
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeRight,
]);
runApp(MyApp());
}
// MyApp ウィジェットクラス
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.light(),
home: const RotatedBox(
quarterTurns: 0,
child: Text('Hello World!'),
)
);
}
}
SystemChrome은 hot reload로 업데이트되지 않았으므로 다시 빌드
위의 코드라면 SystemChrome에서 widget 모두가 오른쪽으로 회전하므로 아래 그림과 같이 된다.
quarterTurns는 0이므로 RotatedBox의 회전 처리는 아직 수행되지 않았습니다.
![](https://s1.md5.ltd/image/d5bd0544aab04c57c04a5256b54c241c.png)
quarterTurns를 1로 변경, 이것도 간단하게 생각하면 좋고, SystemChrome에서 오른쪽을 향한 hello world를 90도 회전시킨다고 하는 이미지로 ok, 이미지는 아래와 같은 느낌
![](https://s1.md5.ltd/image/ed0642ffbfa5c4f8b7b86bc23170915a.png)
마찬가지로 QuarterTurns : 2라면 오른쪽 방향에서 180도, 3이라면 오른쪽 방향에서 270도 회전하는 이미지가 된다.
Reference
이 문제에 관하여(Flutter SystemChrome과 RotatedBox가 동시에 사용되었을 때 혼란스러워서 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masal9pse/items/c5d5c05d2cbe25525d80텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)