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
처럼 몇 퍼센트 정도 열렸는지를 알 수는 없을까? ⇒ 정식으로는 없다.
하지만 돌고돌아서 구현해낼 수는 있다.
당연히 권장되는 방법은 아니지만 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);
}
...
}
엄청나게 잘 만들어진 라이브러리, 플러그인들이 많다. 특정한 걸 하고 싶은 게 아니라 그냥 화려한 효과를 원한다면 좋은 선택일 것 같다.