有两种方法可以退出我们的 Android (Flutter) 应用程序,我们可以反复按返回按钮,也可以只按主页按钮
如果用户按下home button
(不是后退按钮),则应用程序将在后台。我向用户发送 FCM(Firebase 云消息传递)推送通知,应用程序将在后台处理程序中接收消息。然后我像这样在共享首选项中保存一个字符串
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString("myKey", "value here");
final testValue = prefs.getString("myKey");
print("value in background handler: $testValue"); // I confirm I can get the saved value here
}
正如您从上面的代码中看到的那样,我可以从共享首选项中获取值firebaseMessagingBackgroundHandler
用户收到推送通知后,打开应用,直接打开首页。
在主页中,我尝试获取我之前保存的值
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addPostFrameCallback((_) async {
final prefs = await SharedPreferences.getInstance();
final savedValue = prefs.getString("myKey");
print(savedValue); // I get null here initially
});
}
如您所见,当我直接返回应用程序时,我得到了 null 值。我必须再次使用退出应用程序back button
,然后最终我可以从共享首选项中获取字符串值。
为什么我必须按返回按钮才能从共享偏好中获取值?如何解决这个问题?