Flutter中如何根据系统语言动态修改应用名称?
Flutter 动态修改多语言应用名称
Android 端实现步骤
调整 AndroidManifest 配置
打开android/app/src/main/AndroidManifest.xml,将<application>和主<activity>标签的android:label统一指向一个临时占位符(比如@string/temp_app_name),避免硬编码固定名称。建立 Flutter 与 Android 的通信通道
在 Flutter 主入口文件(如main.dart)中创建 MethodChannel,用于向 Android 端传递当前语言对应的应用名称:
import 'package:flutter/services.dart'; const _appNameChannel = MethodChannel('app_name_updater'); Future<void> updateAppName(String newName) async { try { await _appNameChannel.invokeMethod('updateName', {'name': newName}); } on PlatformException catch (e) { print('更新应用名称失败: ${e.message}'); } }
- Android 端实现名称更新逻辑
打开android/app/src/main/kotlin/[你的包名]/MainActivity.kt,添加 MethodChannel 的处理逻辑,接收 Flutter 传递的名称并更新:
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { private val CHANNEL = "app_name_updater" override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result -> if (call.method == "updateName") { val newName = call.argument<String>("name") newName?.let { // 更新当前页面标题 title = it // 更新桌面快捷方式名称(适配 Android 8.0+) updateDesktopShortcut(it) } result.success(null) } else { result.notImplemented() } } } private fun updateDesktopShortcut(appName: String) { val shortcutManager = getSystemService(ShortcutManager::class.java) shortcutManager?.takeIf { it.isRequestPinShortcutSupported }?.run { val shortcutInfo = ShortcutInfo.Builder(this@MainActivity, "main_app_shortcut") .setShortLabel(appName) .setLongLabel(appName) .setIntent(intent) .build() updateShortcuts(listOf(shortcutInfo)) } } }
- Flutter 侧监听语言变化并触发更新
在应用初始化或语言切换时,从你的 .arb 文件中读取对应语言的应用名称,调用更新方法:
// 假设通过本地化工具类获取当前语言的应用名称 final appName = AppLocalizations.of(context)!.appName; await updateAppName(appName);
注意事项
- Android 桌面图标名称依赖系统缓存,修改后可能需要重启桌面或清除应用缓存才能看到变化。
- 若要实现跟随系统语言自动切换,可在 Android 端监听系统语言变化广播,收到通知后通知 Flutter 重新获取并更新名称。
内容的提问来源于stack exchange,提问作者I.A.
相关产品推荐
相关产品推荐

