Flutter

[Flutter] BottomSheet 위젯

미로910 2024. 11. 12. 11:54
  • 화면 아래쪽에서 올라오는 다이얼로그
  • showBottomSheet() 및 showModalBottomSheet()의 builder 속성에 지정한 위젯을 화면 아래쪽에서 올라오도록 보여줌
    • showModalBottomSheet()는 사용자가 Bottom Sheet 외부를 터치하면 Bottom Sheet가 자동으로 닫히지만, showBottomSheet()는 사용자가 Bottom Sheet 외부를 터치해도 Bottom Sheet가 닫히지 않음
  • 다이얼로그를 닫기 위해서는 닫히게 하려면, Navigator.of(context).pop()을 호출하면 됨

 

import 'package:flutter/material.dart';

void main(){
  runApp(BottomSheetApp());
}

class BottomSheetApp extends StatelessWidget {
  const BottomSheetApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'myApp1',
      theme: ThemeData(
        useMaterial3: true,
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue)
      ),
      home: Scaffold(
        appBar: AppBar(title: const Text('Bottom Sheet Sample'),),
        body: MyBottomSheet(),
      ),
    );
  }
}

// 새로운 클래스
class MyBottomSheet extends StatelessWidget {
  const MyBottomSheet({super.key});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        child: const Text('show bottom sheet'),
        onPressed: () {
          // 이벤트 핸들러 처리
          //showBottomSheet(context: context, builder: builder)
          showModalBottomSheet(context: context, builder: (context) {

            return Container(
              child: Column(
                children: [
                    ListTile(
                      leading: Icon(Icons.add),
                      title: Text('Add Item'),
                      onTap: () {
                        Navigator.of(context).pop();
                      },
                    ),
                  ListTile(
                    leading: Icon(Icons.remove),
                    title: Text('Remove Item'),
                    onTap: () {
                      Navigator.of(context).pop();
                    },
                  ),
                ],
              ),
            );
          });
        },
      ),
    );
  }
}

'Flutter' 카테고리의 다른 글

[Flutter] Dio 통신  (0) 2024.11.12
[Flutter] TabBar 위젯  (0) 2024.11.12
[Flutter] 쇼핑 카트 앱 만들어 보기  (3) 2024.11.11
[Flutter] PageView 위젯  (0) 2024.11.11
[Flutter] GridView 위젯  (1) 2024.11.11