Flutter 国际化,国际代码生成不起作用

Gil*_*esh 2 code-generation android-studio flutter dart-null-safety

我使用Android Studio创建了一个新的Flutter 项目。我正在使用空安全,并且正在物理设备上运行应用程序,但代码生成不起作用, .dart_tool文件夹中没有flutter_gen文件夹,只有flutter_build文件夹。

\n

我按照Flutter 官方国际化文档中的步骤操作

\n

我没有使用Flutter Intl插件,因为它不支持空安全(我知道你可以制作一个脚本在每个生成的文件的顶部添加旧的 dart 版本作为解决方法)

\n

flutter doctor 命令输出:

\n
[\xe2\x9c\x93] Flutter (Channel beta, 1.26.0-17.5.pre, on Microsoft Windows [Versi\xc3\x83\xc2\xb3n 10.0.19042.804], locale es-ES)\n    \xe2\x80\xa2 Flutter version 1.26.0-17.5.pre at <PATH>\n    \xe2\x80\xa2 Framework revision 1fe38dcb5f (3 days ago), 2021-02-10 16:25:47 -0800\n    \xe2\x80\xa2 Engine revision d4453f6018\n    \xe2\x80\xa2 Dart version 2.12.0 (build 2.12.0-259.9.beta)\n\n[\xe2\x9c\x93] Android toolchain - develop for Android devices (Android SDK version 30.0.2)\n    \xe2\x80\xa2 Android SDK at <PATH>\n    \xe2\x80\xa2 Platform android-30, build-tools 30.0.2\n    \xe2\x80\xa2 Java binary at: <PATH>\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)\n    \xe2\x80\xa2 All Android licenses accepted.\n\n[\xe2\x9c\x93] Android Studio (version 4.1.0)\n    \xe2\x80\xa2 Android Studio at <PATH>\n    \xe2\x80\xa2 Flutter plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/9212-flutter\n    \xe2\x80\xa2 Dart plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/6351-dart\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)\n\n[\xe2\x9c\x93] VS Code (version 1.53.2)\n    \xe2\x80\xa2 VS Code at <PATH>\n    \xe2\x80\xa2 Flutter extension version 3.19.0\n\n[\xe2\x9c\x93] Connected device (1 available)\n    \xe2\x80\xa2 <DEVICE> \xe2\x80\xa2 android-arm \xe2\x80\xa2 Android 8.1.0 (API 27)\n\n\xe2\x80\xa2 No issues found!\n
Run Code Online (Sandbox Code Playgroud)\n

/pubscpec.yaml:

\n
[\xe2\x9c\x93] Flutter (Channel beta, 1.26.0-17.5.pre, on Microsoft Windows [Versi\xc3\x83\xc2\xb3n 10.0.19042.804], locale es-ES)\n    \xe2\x80\xa2 Flutter version 1.26.0-17.5.pre at <PATH>\n    \xe2\x80\xa2 Framework revision 1fe38dcb5f (3 days ago), 2021-02-10 16:25:47 -0800\n    \xe2\x80\xa2 Engine revision d4453f6018\n    \xe2\x80\xa2 Dart version 2.12.0 (build 2.12.0-259.9.beta)\n\n[\xe2\x9c\x93] Android toolchain - develop for Android devices (Android SDK version 30.0.2)\n    \xe2\x80\xa2 Android SDK at <PATH>\n    \xe2\x80\xa2 Platform android-30, build-tools 30.0.2\n    \xe2\x80\xa2 Java binary at: <PATH>\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)\n    \xe2\x80\xa2 All Android licenses accepted.\n\n[\xe2\x9c\x93] Android Studio (version 4.1.0)\n    \xe2\x80\xa2 Android Studio at <PATH>\n    \xe2\x80\xa2 Flutter plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/9212-flutter\n    \xe2\x80\xa2 Dart plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/6351-dart\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)\n\n[\xe2\x9c\x93] VS Code (version 1.53.2)\n    \xe2\x80\xa2 VS Code at <PATH>\n    \xe2\x80\xa2 Flutter extension version 3.19.0\n\n[\xe2\x9c\x93] Connected device (1 available)\n    \xe2\x80\xa2 <DEVICE> \xe2\x80\xa2 android-arm \xe2\x80\xa2 Android 8.1.0 (API 27)\n\n\xe2\x80\xa2 No issues found!\n
Run Code Online (Sandbox Code Playgroud)\n

/lib/main.dart:

\n
name: example_app\ndescription: A new Flutter application.\npublish_to: \'none\' \nversion: 1.0.0+1\n\nenvironment:\n  sdk: ">=2.12.0-0 <3.0.0"\n  \ndependencies:\n  flutter:\n    sdk: flutter\n  flutter_localizations:\n    sdk: flutter\n  intl: ^0.17.0-nullsafety.2\n  cupertino_icons: ^1.0.1\n  \ndev_dependencies:\n  flutter_test:\n    sdk: flutter\n  integration_test:\n    sdk: flutter\n\nflutter:\n  uses-material-design: true\n  generate: true\n
Run Code Online (Sandbox Code Playgroud)\n

/lib/l10n.yaml:

\n
import \'package:example_app/ui/screen/home_page.dart\';\nimport \'package:flutter/material.dart\';\nimport \'package:flutter_localizations/flutter_localizations.dart\';\n// TODO: uncomment the line below after codegen\n// import \'package:flutter_gen/gen_l10n/app_localizations.dart\';\n\nvoid main() {\n  runApp(MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: \'Flutter Demo\',\n      theme: ThemeData(\n        primarySwatch: Colors.blue,\n      ),\n      home: MyHomePage(\'Flutter Demo Home Page\'),\n      localizationsDelegates: [\n        // ... app-specific localization delegate[s] here\n        // TODO: uncomment the line below after codegen\n        // AppLocalizations.delegate,\n        GlobalMaterialLocalizations.delegate,\n        GlobalWidgetsLocalizations.delegate,\n        GlobalCupertinoLocalizations.delegate,\n      ],\n      supportedLocales: [\n        const Locale(\'en\', \'\'), // English, no country code\n        const Locale(\'es\', \'\'), // Spanish, no country code\n      ],\n    );\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

lib/l10n/app_en.arb

\n
arb-dir: lib/l10n\ntemplate-arb-file: app_en.arb\noutput-localization-file: app_localizations.dart\n
Run Code Online (Sandbox Code Playgroud)\n

lib/l10n/app_es.arb

\n
{\n  "helloWorld": "Hello World!"\n}\n
Run Code Online (Sandbox Code Playgroud)\n