말랑한 하루

[Flutter] (Project) MapleApp: 27. 예외 처리 작업-6 본문

개발/Flutter

[Flutter] (Project) MapleApp: 27. 예외 처리 작업-6

지수는말랑이 2024. 1. 22. 11:35
반응형

🥕 navigator key 사용

그렇게 모든 로직을 Contorller로 옮겼을 때, 우리는 Notifier에 의해 ref를 자유자재로 사용할 수 있지만 Widget의 context를 사용하려면 매개변수로 넘겨주어야 한다. 하지만 이런 경우, 코드 간 응집도가 높아질 수 있기 때문에 다른 방법을 찾고 싶었다.

 

그 중 한 방법이 GoRouter의 navigatorKey를 사용하는 것이다. GlobalKey로 GoRotuer에 navigatorKey를 설정하면 key의 currentContext를 통해 가장 최근의 context를 가져올 수 있고, 그 context로 go/push 행위를 진행할 수 있다. 사용은 다음과 같다.

GlobalKey<NavigatorState> navigatorkey = GlobalKey<NavigatorState>();

GoRouter mainRouter = GoRouter(
  navigatorKey: navigatorkey,
	...
);

navigatorkey.currentContext.go('/');

 

🥕 SingleChildScrollView Scroll 위치 초기화

Scroll에 대한 컨트롤을 하고 싶으면 ScrollController를 사용하면 된다.

 

※ reference : https://api.flutter.dev/flutter/widgets/ScrollController-class.html

우리는 강제적으로 위치를 0으로 옮기고 싶으므로, reference에서 찾을 수 있는 jumpTo method를 활용하면 간단하게 사용할 수 있다.

반응형
Comments