반응형
옛날에는 Snack bar를 사용하기 위해서는 ScaffoldMessenger의 특수성때문에, 중간에 builder를 넣고, ScaffoldMessenget내부에서 scaffold를 만드는등, 복잡한 짓을 해야 했다.
하지만 2.0업데이트 이후 이런 똥꼬쇼를 할 이유가 없어졌다.
지금 현재 ScaffoldMessenger는 훨씬 사용하기 편리해진 상태다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
class MyPage extends StatelessWidget {
Widget build(BuildContext context) { //여기 있는 context 가져옴
return Scaffold(
appBar: AppBar(
title: Text('snack bar'),
),
body: SizedBox( //버튼 크기 조절을 위해 삽입
width: 100.0,
height: 100.0,
child: TextButton(
child: Text('press this button'),
style: TextButton.styleFrom(
backgroundColor: Colors.yellow, //배경색
primary: Colors.red, // foreground
),
onPressed: (){ //버튼을 눌렀을때
ScaffoldMessenger.of(context).showSnackBar(
//SnackBar 구현하는법 context는 위에 BuildContext에 있는 객체를 그대로 가져오면 됨.
SnackBar(
content: Text('Like a new Snack bar!'), //snack bar의 내용. icon, button같은것도 가능하다.
duration: Duration(seconds: 5), //올라와있는 시간
action: SnackBarAction( //추가로 작업을 넣기. 버튼넣기라 생각하면 편하다.
label: 'Undo', //버튼이름
onPressed: (){}, //버튼 눌렀을때.
),
)
);
}
),
),
);
}
}
|
cs |
주석에서 설명했다시피, 어떤 버튼의 onPressed를 눌렀을때
17번째 줄부터 21번째 줄을 진행해주면 간단하며,
action부분은추가로 그 SnackBar에 button을 넣고 싶을때나 사용한다.
캡처해둔 저 snackbar는 버튼 누른후 5초있으면 사라진다.
다만 이 방식은 Navigator를 통해 화면이 바뀌었을때도 적용이 된다는 것에 유의해야한다,
반응형
'Flutter' 카테고리의 다른 글
flutter desktop app 설치법-(원래 flutter는 한사람 기준) (0) | 2021.08.23 |
---|---|
flutter 화면 전환(Navigator) (0) | 2021.08.22 |
flutter EdgeInsets 사용법 (0) | 2021.08.18 |
button 종류/사용법(최신판) (flutter) (0) | 2021.08.18 |
유용한 key 정리 (android studio, flutter) (6) | 2021.08.18 |