Flutter/튜토리얼

배치와 Scaffold

DGL 2022. 1. 31. 23:58

출처: https://www.youtube.com/watch?v=U6rLIFn59Kw 

 

MaterialApp -> google 스타일의 , 또는 커스텀 디자인의 (디자인 뿐만 아니라 기본세팅)
Cupertino -> iphone 스타일의 애플리케이션


MaterialApp 
 Scaffold -> 상단 중단 하단으로 구성되어있는 애플리케이션 개발용
  appBar: (상단)
  body: (중단)
  bottomNavigationBar: (하단) 

 

 

가로 배치: Row
세로 배치: Column

 

속성: mainAxisAlignment (Row의 경우 가로속성, Column의 경우 세로속성)

crossAxisAlignment(Row의 경우 세로속성, Column의 경우 가로속성)

 

Column 예시

Column(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  crossAxisAlignment: CrossAxisAlignment.center,
  children: const [
    Icon(Icons.star),
    Icon(Icons.star)
  ],
),

세로로 별 두개를 배치(균등하게)

 

 

연습문제 정답?

 

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            appBar: AppBar(title: const Text('앱임'),),
            body: const Text('안녕'),
          bottomNavigationBar: BottomAppBar(
            child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: const [Icon(Icons.phone),
              Icon(Icons.message),
              Icon(Icons.contact_page),
            ],
          ),

        ))
    );
  }
}

 

BottomAppbar를 SizedBox로 감싸야한다. (정답참조본)

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            appBar: AppBar(title: const Text('앱임'),),
            body: const Text('안녕'),
          bottomNavigationBar: BottomAppBar(
            child: SizedBox(
              height: 70,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: const [Icon(Icons.phone),
                  Icon(Icons.message),
                  Icon(Icons.contact_page),
                ],
              ),
            )

        ))
    );
  }
}