레이아웃 하기전에..
MaterialApp 짚고 넘어가기
이 것도 위젯임.
이걸 사용하면 구글의 매터리얼 테마로 쉽게 쉽게 만들 수 있게 해준다.
아이폰 기본 앱같은애를 만들고 싶으면 Cupertino 로 사용.
그냥 커스텀 디자인을 입힌 나만의 위젯
그래도 Material App() 으로 쓰면 됨
그냥 쓰고 구글물을 뺀다고 생각할 것.
MaterialApp 을 쓰면
home:Scaffold(
appBar: AppBar(),
body: Container(),
bottomNavigationBar: BottomAppBar( child: Text('adsjklfj')),
)
상중하로 나눠줌.
여러 위젯 가로로 배치하기
prefer_const_literals_to_create_immutables: false
위 추가하기
return MaterialApp(
home:Scaffold(
body: Row( // 이 부분을 Column으로 바꾸면 세로로 정렬 됨
mainAxisAlignment: MainAxisAlignment.center, // 가운데 정렬
mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 적절히 떨어뜨림.
crossAxisAlignment: CrossAxisAlignment.center, // 세로 정렬
children: [
Icon(Icons.star),
Icon(Icons.star),
Icon(Icons.star),
]
)
)
);
자동완성을 잘 사용하자.
mainAxisAlignment :
여기까지 친 상태에서
- 왼족에 있는 애를 대문자로 써보자.
- 파라미터에 마우스를 올려본다.
걍 구글링 잘 해…
숙제
파란색 상단바가 뿅 나오게 하단바 안에다가 아이콘 세개 배치
Icon(Icons.phone), Icon(Icons.message), Icon(Icons.contact_page),
완성본
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: Text('앱임')),
body: Text('안녕'),
bottomNavigationBar: BottomAppBar(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 적절히 떨어뜨림.
children:[
Icon(Icons.phone),
Icon(Icons.message),
Icon(Icons.contact_page)
]
)
),
)
);
}
}
02 박스 디자인
위의 예제에서 패딩을 높여보고 싶다면
왼쪽의 전구: Wrap with Container
이렇게하면 Container로 감쌀 수 있음.
그러면 이제 height를 설정해줄 수 있음.
변경된 코드
child: Container( // 이때 width, height, child만 필요한 박스면 SizedBox라고 넣으면 됨
height: 70,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 적절히 떨어뜨림.
children:[
Icon(Icons.phone),
Icon(Icons.message),
Icon(Icons.contact_page)
]
),
)
margin 넣고, padding 넣고 등등
body: Container(
width: 150, height: 50, color: Colors.blue,
margin : EdgeInsets.all(20), // 이렇게 마진을 줄 수 있음
margin : EdgeInsets.fromLTRB(0, 30, 0, 0), // 이런식으로 쓰면 위쪽만 줄 수 있음. (left, top, right, bottom 순임)
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
border:
color:
)
child: Text('dddd'),
)
가운데 정렬하기
body: Align(
alignment: Alignment.center ,
child: Container(
width: 150, height: 50, color: Colors.black,
),
wdith: double.infinity
를 사용하면 무한히 채워줌.