본문 바로가기
Flutter/Flutter FAQ

Flutter 플러터 앱에서 문맥 없이 탐색하는 방법은 무엇인가요?, How to navigate without context in flutter app?

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

질문


OneSignal을 사용하여 푸시 알림을 받는 앱이 있습니다. 푸시 알림을 클릭하면 특정 화면이 열리도록 알림 오픈 핸들러를 만들었습니다. 컨텍스트 없이 화면으로 이동하는 방법이 있을까요? 또는 앱 시작 시 특정 화면을 열 수 있는 방법이 있을까요? 내 코드:

OneSignal.shared.setNotificationOpenedHandler((notification) {
  var notify = notification.notification.payload.additionalData;
  if (notify["type"] == "message") {
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => DM(user: notify['id']),
      ),
    );
  }
  if (notify["type"] == "user") {
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => Profileo(notify["id"]),
      ),
    );
  }
  if (notify["type"] == "post") {
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => ViewPost(notify["id"]),
      ),
    );
  }
});

앱을 처음 열 때는 이를 성취할 수 있지만, 앱을 닫고 다시 열어도 홈페이지만 열립니다. 이는 컨텍스트가 변경되었기 때문인 것 같습니다.

도움을 부탁드립니다!!


답변


여기를 봐주세요: https://github.com/brianegan/flutter_redux/issues/5#issuecomment-361215074

네비게이션을 위해 전역 키를 설정할 수 있습니다:

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

MaterialApp에 전달하세요:

new MaterialApp(
      title: 'MyApp',
      onGenerateRoute: generateRoute,
      navigatorKey: navigatorKey,
    );

라우트를 푸시하세요:

navigatorKey.currentState.pushNamed('/someRoute');
반응형

댓글