일반적인 경고창을 만들고 필요한 화면에서 호출가능하고, 재사용 가능하다.
팝업창의 입력값에 따라 다른 처리도 가능하다.
class WarningYesNo extends StatelessWidget {
final title;
final msg;
final YesMsg;
final NoMsg;
WarningYesNo({required this.title, required this.msg, required this.YesMsg, required this.NoMsg});
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(title,
textAlign: TextAlign.center,
),
content: Text(msg,
),
actions: <Widget>[
Container(
decoration: BoxDecoration(),
child: MaterialButton(
onPressed: () {
print('WarningYesNo >> false');
Get.back(result: false);
},
child: Text(NoMsg),
),
),
Container(
decoration: BoxDecoration(),
child: MaterialButton(
onPressed: () {
print('WarningYesNo >> true');
Get.back(result: true);
},
child: Text(YesMsg),
),
),
],
);
}
}
실제 코드에서 호출하는 예시
- 데이터 삭제시 OK버튼을 누른경우만 데이터를 삭제하는 샘플
//delete
deleteChapter() async {
var _msg;
try {
var delete = await deleteLoanWarning(
context,
_multiMsg.strWarnMessage,
_multiMsg.strWarnDelete,
);
-- OK버튼을 누르면 데이터 삭제
if (delete.toString() == 'true') {
await deleteData(widget.chapterInfo['id']); // IbJB3jwVBR7WRsPXqAG9
}
} catch (error) {
print('error clearing notifications' + error.toString());
}
}
Future<bool> deleteLoanWarning(BuildContext context, String title, String msg) async {
return await showDialog<bool>(
context: context,
builder: (context) => WarningYesNo(title: title, msg: msg, YesMsg: _multiMsg.strYes, NoMsg: _multiMsg.strNo,),
) ?? false;
}
팝업창 화면
'Flutter > 04 Widgets' 카테고리의 다른 글
[Flutter] Widgets - button (0) | 2022.04.15 |
---|---|
[Flutter] Widgets - ListView.builder + Card (0) | 2021.12.29 |
[Flutter] Widgets(3) - Custom Widget (0) | 2021.10.07 |
[Flutter] Widgets(2) - Custom decoration (0) | 2021.10.07 |
[Flutter] Widgets(1) - bottomNavigationBar with Getx (0) | 2021.08.11 |