2019. 4. 16. 11:29ㆍFlutter
#1
단순할 줄 알았던 showDialog 사용하기 위해 어렵게 돌아서 왔다.
문제발생 : main.dart > build() > Scaffold > floatingActionButton 아래의 소스코드가 동작하지 않는다.
floatingActionButton: FloatingActionButton(
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('푸시알림'),
content: Text('얍'),
actions: <Widget>[
FlatButton(
child: Text('OK'),
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
},
);
},
child: Icon(Icons.add),
),
#2
이유는 'context' 때문.
쉽게 말해 showDialog를 사용할때 전달해줘야 하는 context를 잘못 넘겨줬다.
이 경우 Builder를 사용해 child의 context를 넘겨줄 것.

#3
수정 (정상코드)
floatingActionButton: new Builder(
builder: (context) => FloatingActionButton(
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('푸시알림'),
content: Text('얍'),
actions: <Widget>[
FlatButton(
child: Text('OK'),
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
},
);
},
child: Icon(Icons.add),
),
),
#4
Builder 클래스란, '자식 위젯의 context를 전달해 주는 객체'.
+ Flutter에서 모든 위젯은 builder() 함수를 가지고 인자값으로 context를 전달한다. (Flutter Framework Automatically).
Can someone explain to me what the Builder Class does in Flutter?
The documentation is very confusing and vague. Here is what it states: Builder class A platonic widget that calls a closure to obtain its child widget. Here are my questions: What do they mea...
stackoverflow.com
'Flutter' 카테고리의 다른 글
| iOS build issue - 'Flutter/Flutter.h' file not found (0) | 2021.08.31 |
|---|---|
| iOS build issue - Error running pod install (0) | 2021.08.31 |
| [Flutter] BLOC패턴 (1) | 2019.06.20 |
| [Flutter] iOS: Command /bin/sh failed with exit code 255 (0) | 2019.05.15 |
| [Flutter] MethodChannel (0) | 2019.05.15 |