
1. Expanded : 남은 여백을 모두 차지
 body: Column(
   // Column은 배열로 감싸져 있음
   children: [
     Container(
       height: 500,
       color: Colors.blue,
     ),
     Expanded(
       child: Container(
         color: Colors.red,
       ),
     ),
   ],
 ),- 설정된 height 값을 무시
 body: Column(
   // Column은 배열로 감싸져 있음
   children: [
     Expanded(
       child: Container(
         height: 500,
         color: Colors.blue,
       ),
     ),
     Expanded(
       child: Container(
         color: Colors.red,
       ),
     ),
   ],
 ),2. flex : 비율 지정
- 높이를 굉장히 유연하게 맞출 수 있음
body: Column(
  // Column은 배열로 감싸져 있음
  children: [
    Expanded(
      flex: 9,
      child: Container(
        color: Colors.blue,
      ),
    ),
    Expanded(
      flex: 1,
      child: Container(
        color: Colors.red,
      ),
    ),
  ],
),3. MediaQuery : 디바이스의 크기 확인
- var m = MediaQuery.of(context); 이용해서 확인
- 최초의 처음 실행되는 위젯(여기서는 FirstApp)에서는 실행이 안됨
- HomeApp()이라는 위젯을 새로 만들고 그 안에서 MediaQuery 사용
class FirstApp extends StatelessWidget {
  const FirstApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
        child: Scaffold(
          // Column은 가로는 가지고 있지만 세로는 가지고 있지 않음
          body: HomeApp(),
        ),
      ),
    );
  }
}
class HomeApp extends StatelessWidget {
  const HomeApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    var m = MediaQuery.of(context);
    print("넓이 : ${m.size.width}");
    print("높이 : ${m.size.height}");
    return Column(
      // Column은 배열로 감싸져 있음
      children: [
        Expanded(
          flex: 9,
          child: Container(
            color: Colors.blue,
          ),
        ),
        Expanded(
          flex: 1,
          child: Container(
            color: Colors.red,
          ),
        ),
      ],
    );
  }
}
- SafeArea의 영역때문에 디바이스의 높이가 줄어듦
      SafeArea의 높이만큼은 값을 빼줘야 함
- SafeArea의 padding 값을 확인하기
      SafeArea를 적용시키지 않은 상태에서 확인
class HomeApp extends StatelessWidget {
  const HomeApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    var m = MediaQuery.of(context);
    print("넓이 : ${m.size.width}");
    print("높이 : ${m.size.height}");
    // SafeArea를 확인하기 위해서는 FirstApp의 SafeArea를 지우고 확인해야 함
    print("SafeArea : ${m.padding.top}");
    return Column(
      // Column은 배열로 감싸져 있음
      children: [
        Container(
          height: (m.size.height - 24) * 0.7,
          color: Colors.blue,
        ),
        Container(
          height: (m.size.height - 24) * 0.3,
          color: Colors.red,
        ),
      ],
    );
  }
}- 24의 값은 현재 디바이스에서의 SafeArea가 차지하는 높이
     디바이스마다 값이 다르므로 확인 필수

Share article


