개요
이번 블로그 포스트에서는 GetX를 사용하여 BottomSheet
를 사용하는 방법에 대해서 알아보도록 하겠습니다. 이 블로그 포스트에서 소개하는 소스 코드는 아래에 링크에서 확인할 수 있습니다.
블로그 시리즈
이 블로그 포스트는 Flutter에서 GetX를 사용하는 방법에 관해 시리즈로 제작되었습니다. GetX의 다른 사용법을 알고 싶으시다면, 다음 링크를 참고하시기 바랍니다.
- [GetX] 상태 관리
- [GetX] 라우트 관리
- [GetX] 종속성 관리
- [GetX] 다국어 지원
- [GetX] 테마
- [GetX] BottomSheet
- [GetX] Dialog
- [GetX] 스낵바
- [GetX] 플랫폼 및 디바이스 정보
GetX 설치
Flutter에서 GetX의 사용법을 확인하기 위해 다음 명령어를 사용하여 Flutter의 새로운 프로젝트를 생성합니다.
flutter create bottom_sheet
그런 다음 명령어를 실행하여 GetX
패키지를 설치합니다.
flutter pub add get
이제 이렇게 설치한 GetX를 사용하여 BottomSheet를 사용하는 방법에 대해서 알아보도록 하겠습니다.
BottomSheet 열기
GetX를 사용하여 BottomSheet
를 사용하기 위해서는 다음과 같이 Get.bottomSheet
함수를 사용해야 합니다.
Get.bottomSheet(
Widget(),
);
이를 확인하기 위해, lib/main.dart
를 다음과 같이 수정합니다.
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({Key? key}) : super(key: key);
void openBottomSheet() {
Get.bottomSheet(
Column(
children: [
const SizedBox(height: 20),
const Center(
child: Text(
'Bottom Sheet',
style: TextStyle(fontSize: 18),
),
),
OutlinedButton(
onPressed: () {
Get.back();
},
child: const Text('Close'),
),
],
),
backgroundColor: Colors.white,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("BottomSheet"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Bottom sheet example'),
OutlinedButton(
onPressed: openBottomSheet,
child: const Text('Open'),
)
],
),
),
);
}
}
이를 실행하면 다음과 같은 화면을 확인할 수 있습니다.
화면에 표시된 Open
버튼을 누르면 다음과 같이 Get.bottomSheet
를 호출하게 됩니다.
void openBottomSheet() {
Get.bottomSheet(
Column(
children: [
const SizedBox(height: 20),
const Center(
child: Text(
'Bottom Sheet',
style: TextStyle(fontSize: 18),
),
),
OutlinedButton(
onPressed: () {
Get.back();
},
child: const Text('Close'),
),
],
),
backgroundColor: Colors.white,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
);
}
그럼 다음과 같이 BottomSheet
가 표시되는 것을 확인할 수 있다.
BottomSheet 닫기
화면에 표시된 BottomSheet
를 닫기 위해서는 다음과 같이 Get.back()
함수를 사용합니다.
Get.back();
예제에서는 다음과 같이 닫기 버튼에 Get.back()
함수를 사용하도록 하였습니다.
Get.bottomSheet(
Column(
children: [
...
OutlinedButton(
onPressed: () {
Get.back();
},
child: const Text('Close'),
),
],
),
...
);
BottomSheet 확인
GetX에서는 다음과 같이 BottomSheet
가 열려있는지 열려있지 않은지 확인할 수 있습니다.
Get.isBottomSheetOpen
이를 확인하기 위해서 openBottonSheet()
함수를 다음과 같이 수정합니다.
void openBottomSheet() {
Future.delayed(const Duration(seconds: 1), () {
// ignore: avoid_print
print(Get.isBottomSheetOpen);
});
Get.bottomSheet(
...
);
}
이를 실행하면 1초후에 true
가 출력되는 것을 확인할 수 있습니다.
flutter: true
완료
이것으로 GetX를 사용하여 Flutter에서 BottomSheet를 표시하는 방법에 대해서 알아보았습니다. 또한 BottomSheet를 닫기 위한 방법과 열려있는지 확인하는 방법들에 대해서도 알아보았습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.