You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何根据系统语言动态修改应用名称?

Flutter 动态修改多语言应用名称

Android 端实现步骤

  1. 调整 AndroidManifest 配置
    打开android/app/src/main/AndroidManifest.xml,将<application>和主<activity>标签的android:label统一指向一个临时占位符(比如@string/temp_app_name),避免硬编码固定名称。

  2. 建立 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}');
  }
}
  1. 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))
        }
    }
}
  1. Flutter 侧监听语言变化并触发更新
    在应用初始化或语言切换时,从你的 .arb 文件中读取对应语言的应用名称,调用更新方法:
// 假设通过本地化工具类获取当前语言的应用名称
final appName = AppLocalizations.of(context)!.appName;
await updateAppName(appName);

注意事项

  • Android 桌面图标名称依赖系统缓存,修改后可能需要重启桌面或清除应用缓存才能看到变化。
  • 若要实现跟随系统语言自动切换,可在 Android 端监听系统语言变化广播,收到通知后通知 Flutter 重新获取并更新名称。

内容的提问来源于stack exchange,提问作者I.A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:25:05