본문 바로가기
Flutter/Flutter FAQ

Flutter 플러터: 프로그래밍 방식으로 드로어 열기, Flutter: How to open Drawer programmatically

by 베타코드 2023. 8. 23.
반응형

질문


저는 Drawer를 슬라이딩이 아닌 프로그래밍 방식으로 열고 싶습니다. 슬라이딩 기능(드로어의 터치 기능)을 비활성화하는 방법은 무엇인가요?


답변


Null 안전 코드

  • GlobalKey를 사용:

    final GlobalKey<ScaffoldState> _key = GlobalKey(); // 키 생성
    
    @override
    Widget build(BuildContext context) {
      return Scaffold(
        key: _key, // 키를 Scaffold에 할당.
        drawer: Drawer(),
        floatingActionButton: FloatingActionButton(
          onPressed: () => _key.currentState!.openDrawer(), // <-- 드로어 열기
        ),
      );
    }
    
  • Builder를 사용:

    @override
    Widget build(BuildContext context) {
      return Scaffold(
        drawer: Drawer(),
        floatingActionButton: Builder(builder: (context) {
          return FloatingActionButton(
            onPressed: () => Scaffold.of(context).openDrawer(), // <-- 드로어 열기.
          );
        }),
      );
    }
    

Drawer를 드래그 제스처로 열 수 없도록 하려면 다음을 설정할 수 있습니다.

Scaffold(
  drawerEnableOpenDragGesture: false
  // 위의 코드 ...
)
반응형

댓글