반응형
질문
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');
반응형
댓글