Flutter如何解决attempted to generate localizations code without having the flutter: generat错误

我在使用Flutter开发时遇到了"attempted to generate localizations code without having the flutter: generate"错误。这个错误通常出现在运行flutter gen-l10n命令时,提示无法生成本地化代码。我已经按照官方文档在pubspec.yaml中配置了flutter_localizations依赖,但仍然报错。请问这个问题该如何解决?是否需要额外配置其他文件或者修改某些设置?

2 回复

这个错误通常是因为缺少本地化配置导致的。解决方法如下:

  1. 在 pubspec.yaml 中添加依赖
dependencies:
  flutter_localizations:
    sdk: flutter
  1. 启用生成器
flutter:
  generate: true
  1. 创建 l10n.yaml 文件(项目根目录):
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
  1. 创建本地化文件: 在 lib/l10n/ 目录下创建 app_en.arb 等语言文件

  2. 执行命令

flutter gen-l10n
  1. 在 MaterialApp 中配置
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,

完成这些步骤后重新运行项目即可解决该错误。

更多关于Flutter如何解决attempted to generate localizations code without having the flutter: generat错误的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


这个错误通常是因为Flutter本地化代码生成配置不正确导致的。以下是解决方案:

1. 检查 pubspec.yaml 配置

确保在 pubspec.yaml 中正确配置了本地化生成器:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

flutter:
  generate: true

2. 创建 l10n.yaml 文件

在项目根目录创建 l10n.yaml 文件:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

3. 创建本地化文件目录和文件

lib/l10n/ 目录下创建 ARB 文件:

app_en.arb:

{
  "@@locale": "en",
  "hello": "Hello",
  "@hello": {
    "description": "A simple greeting"
  }
}

app_zh.arb:

{
  "@@locale": "zh",
  "hello": "你好"
}

4. 在 MaterialApp 中配置

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: [
        AppLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        Locale('en'),
        Locale('zh'),
      ],
      home: MyHomePage(),
    );
  }
}

5. 重新生成代码

运行以下命令重新生成本地化代码:

flutter clean
flutter pub get
flutter gen-l10n

或者直接运行项目:

flutter run

常见问题排查

  • 确保 flutter: 下有 generate: true
  • 检查 l10n.yaml 文件路径和格式是否正确
  • 确认 ARB 文件存在于指定目录
  • 运行 flutter clean 清除缓存

按照以上步骤操作后,错误应该就能解决。

回到顶部