【发布时间】:2019-08-26 20:10:00
【问题描述】:
我想我的方法涉及设置到像这样的通知选项卡:
class NotificationUtil {
static void subscribeToNotifications(BuildContext context, GlobalKey<ScaffoldState> scaffoldKey) async {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
_showNotification(scaffoldKey, message);
},
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
await PreferenceUtil.setNotificationKey();
},
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
await PreferenceUtil.setNotificationKey();
},
);
await _firebaseMessaging.getToken();
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
FirebaseUser firebaseUser = await AuthUtil.getFirebaseUser();
_firebaseMessaging
.subscribeToTopic(firebaseUser.email.replaceAll('@', '%'));
}
static void _showNotification(GlobalKey<ScaffoldState> scaffoldKey, Map<String, dynamic> message) {
scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text(message['notification']['body'] as String),
));
}
}
但是从后台恢复时似乎没有调用initState。
@override
void initState() {
super.initState();
PreferenceUtil.showNotifications().then((showNotification) async {
print("the show notification state is:" +showNotification.toString());
await PreferenceUtil.clearNotificationKey();
if (showNotification) {
setState(() {
_selectedIndex = 1;
});
}
});
}
【问题讨论】:
-
也许您可以在应用恢复时调用您的方法? stackoverflow.com/questions/49869873/…
-
谢谢 - 我试过了,但如果我有嵌套路由,它就不起作用了。
标签: flutter