[Flutter] Dialog, Modal

2024. 2. 22. 10:53dev/flutter

728x90
반응형

exit dialog code

  void _showExitDialog() {
    showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: const Text("알림", style: TextStyle(fontSize: 21),),
        content: const SingleChildScrollView(
          child: ListBody(
            children: [
              Text("종료 하시겠습니까?", style: TextStyle(fontSize: 16),)
            ],
          ),
        ),
        actionsAlignment: MainAxisAlignment.spaceEvenly,
        actionsPadding: const EdgeInsets.only(bottom: 8.0),
        actions: [
          TextButton(
            onPressed: () {
              Navigator.of(context).pop();
            },
            child: const Text("취소"),
          ),
          TextButton(
            onPressed: () {
              SystemNavigator.pop(animated: true);
            },
            child: const Text("확인"),
          ),
        ],
      ),
    );
  }

 

2024-03-06-수 TextField를 사용하려 했는데 계속해서 에러가 발생했다.

해결 방법으로 content안에 SingleChildView를 사용하는 것.

 

CupertinoDialog

void _showAddDataDialog() {
showCupertinoModalPopup(context: context, builder: (context) => CupertinoAlertDialog(
  title: Text("Text & TextField Dialog"),
  content: Column(
    mainAxisSize: MainAxisSize.min,
    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
    children: [
      Row(
        children: [
          Expanded(flex:rateDialogContentLeft, child: Text("place:")),
          Expanded(flex:rateDialogContentRight, child: CupertinoTextField()),
        ],
      ),
      Row(
        children: [
          Expanded(flex:rateDialogContentLeft, child: Text("name:")),
          Expanded(flex:rateDialogContentRight, child: CupertinoTextField()),
        ],
      ),

      Row(
        children: [
          Expanded(flex:rateDialogContentLeft, child: Text("password:")),
          Expanded(flex:rateDialogContentRight, child: CupertinoTextField()),
        ],
      ),

      Row(
        children: [
          Expanded(flex:rateDialogContentLeft, child: Text("Memo:")),
          Expanded(flex:rateDialogContentRight, child: CupertinoTextField()),
        ],
      ),
    ],
  ),
  actions: [
    CupertinoButton(child: Text("cancel"), onPressed: () {Navigator.pop(context);}),
    CupertinoButton(child: Text("ok"), onPressed: () {})
  ],
),);
}

 

 

2024-03-11-월

showDialog로 return값을 받기

bool isResult = await showDialog(context: context, builder: (context) => 
	AlertDialog(
      title: const Text("알림"),
      content: const Text("수정하시겠습니까?"),
      actions: [
        TextButton(
          onPressed: () {
            Navigator.of(context).pop(true);
          },
          child: const Text("update")
        ),
      ],
    ),);

 

 

2024-05-29-수 : showModalBottomSheet

기본 사용법

더보기
showModalBottomSheet(context: context, builder: (context) => SizedBox());

 

애니메이션을 적용하고 싶은 경우

showModalBottomSheet(context: context,
  builder: (context) { },
  sheetAnimationStyle: AnimationStyle(
    duration: const Duration(seconds: 2),  // 표출되는 애니메이션
    reverseDuration: const Duration(seconds: 1)  // 닫히는 애니메이션
  )

 

728x90
반응형

'dev > flutter' 카테고리의 다른 글

[Flutter] TopNavigationBar(DefaultTabController), TabBar  (0) 2024.03.05
[Flutter] Package #pub.dev #Plugin #src  (0) 2024.02.22
[Flutter] TextField  (0) 2024.02.21
[Flutter] Geolocator #location  (0) 2024.02.21
[Flutter] CustomPainter  (0) 2024.02.14