Android로 치자면 DrawerListener.[onDrawerSlide](https://developer.android.com/reference/androidx/drawerlayout/widget/DrawerLayout.DrawerListener#onDrawerSlide(android.view.View, float)) 같은 것

Flutter는 2.0 에서 업데이트 된 Scaffold.onDrawerChanged로 open인지 close 인지만 알 수 있다.

open/close 여부는 내부 코드를 까보면 drawer의 위치가 0.5를 기준으로 변한다.

그렇다면 onDrawerSlide 처럼 몇 퍼센트 정도 열렸는지를 알 수는 없을까? ⇒ 정식으로는 없다.

하지만 돌고돌아서 구현해낼 수는 있다.

1. 코드 수정하기

당연히 권장되는 방법은 아니지만 Drawer 위젯 내부 코드를 수정하면 가져올 수 있다.

AnimationController의 value를 가져오거나 읽어오면 된다.

class DrawerControllerState extends State<DrawerController> with SingleTickerProviderStateMixin {
  @override
  void initState() {
    super.initState();
    _scrimColorTween = _buildScrimColorTween();
    _controller = AnimationController(
      value: widget.isDrawerOpen ? 1.0 : 0.0,
      duration: _kBaseSettleDuration,
      vsync: this,
    );
    _controller
      ..addListener(_animationChanged)
      ..addStatusListener(_animationStatusChanged);
  }

...
}

2. 직접 Drawer를 구현하기 or 구현된 Plugin을 찾기

엄청나게 잘 만들어진 라이브러리, 플러그인들이 많다. 특정한 걸 하고 싶은 게 아니라 그냥 화려한 효과를 원한다면 좋은 선택일 것 같다.

https://www.youtube.com/watch?v=ZHRhSFXqHJY

Drawer Animation in Flutter

Flutter Animated Navigation Drawer