[flutter] BottomSheet 화면 전환하기

Flutter에서 BottomSheet를 사용하여 하단에서 화면을 전환하는 방법을 알아보겠습니다.

1. BottomSheet 사용하기

먼저, Scaffold 내부에서 BottomSheet를 사용할 수 있습니다. 아래 예제는 FloatingActionButton을 눌렀을 때 BottomSheet가 나타나도록 구현한 코드입니다.

floatingActionButton: FloatingActionButton(
  onPressed: () {
    showModalBottomSheet(
      context: context,
      builder: (BuildContext context) {
        return Container(
          child: Text('하단에서 나타나는 화면'),
        );
      },
    );
  },
  child: Icon(Icons.add),
),

2. BottomSheet에 위젯 추가하기

BottomSheet에는 여러 위젯을 추가하여 화면을 구성할 수 있습니다. 예를 들어, ListView나 Column을 사용하여 다른 위젯들을 배치할 수 있습니다.

showModalBottomSheet(
  context: context,
  builder: (BuildContext context) {
    return Container(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          ListTile(
            leading: Icon(Icons.photo),
            title: Text('사진 추가'),
            onTap: () {
              // 사진 추가 기능 구현
            },
          ),
          ListTile(
            leading: Icon(Icons.music_note),
            title: Text('음악 추가'),
            onTap: () {
              // 음악 추가 기능 구현
            },
          ),
          // 추가적인 메뉴 항목들
        ],
      ),
    );
  },
);

3. BottomSheet 화면 전환

BottomSheet가 나타난 후 사용자가 특정 항목을 선택할 경우, 해당 항목에 맞는 화면으로 전환할 수 있습니다.

showModalBottomSheet(
  context: context,
  builder: (BuildContext context) {
    return Container(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          ListTile(
            title: Text('항목 1'),
            onTap: () {
              Navigator.push(context, MaterialPageRoute(builder: (context) => Screen1()));
            }
          ),
          ListTile(
            title: Text('항목 2'),
            onTap: () {
              Navigator.push(context, MaterialPageRoute(builder: (context) => Screen2()));
            }
          ),
        ],
      ),
    );
  },
);

4. 결론

Flutter에서 BottomSheet를 사용하여 하단에서 화면을 전환하는 방법에 대해 알아보았습니다. BottomSheet를 활용하여 사용자에게 더 나은 경험을 제공할 수 있도록 화면을 구성해보세요!

더 자세한 내용은 Flutter 공식 문서를 참고해보세요.