Flutter 后台消息国际化

问题描述 投票:0回答:3

在我的 flutter 应用程序中,我想翻译推送通知正文中的一些文本。

用于前台通知。没问题。

对于我使用的后台通知:

void main() {
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  runApp(MyApp());
}

并且

_firebaseMessagingBackgroundHandler
必须是顶级函数。

那么,既然我在这里没有上下文,我该如何使用我著名的

AppLocalizations.of(context).cancel,
呢?

flutter dart push-notification firebase-cloud-messaging internationalization
3个回答
2
投票

由于

_firebaseMessagingBackgroundHandler
是顶级函数 - 您可以将
context
作为可选参数传递。这样您就可以访问上下文。

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message,
    {BuildContext? context}){
   
       //Your code
}

0
投票

在 MyApp 中创建变量 static 经验:

static BuildContext? mContext;

在 MyApp 的构建函数中

mContext = context;

0
投票

我遇到了同样的问题,这是我的解决方案:

@pragma('vm:entry-point')
Future<void> _backgroundMessageHandler(RemoteMessage message) async {
  Locale locale = PlatformDispatcher.instance.locale;
  AppLocalizations? localizations =
    locale.languageCode == 'fr' ? AppLocalizationsFr() : AppLocalizationsEn();
}

基本上我使用了基于平台的

locale
而不是
context
的本地化。

我想知道为什么没有人建议这个,它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.