如何在 Android Studio 快速修复菜单中获取 AppLocalizations 导入建议

How to get AppLocalizations import suggestion in Android Studio Quick Fix menu

提问人:aaronkelton 提问时间:2/1/2022 更新时间:5/26/2023 访问量:925

问:

问题陈述

目前,在 AppLocalizations 上调出 Android Studio 快速修复菜单(Opt/Alt+Enter 键盘快捷键)不建议导入生成的文件。

AppLocalizations 类位于 ,这也是一个被 Git 忽略的目录。.dart_tool/flutter_gen/gen_l10n/app_localizations.dart

因此,我必须手动键入 import 语句。其他 Flutter 类名通常建议通过 Quick Fix 菜单导入相关文件。

预期内容

我希望“快速修复”菜单建议导入生成的 AppLocalizations 文件。当我单击导入建议时,它应该将其与文件顶部的其他导入语句一起插入。

问题

如何让导入建议显示在 AppLocalizations 的“快速修复”菜单中?我需要帮助 Dart 分析器“知道”目录内生成的文件吗?我可以将生成的文件包含在我的“项目”中,同时仍然忽略它吗?我是否需要以某种方式在我的 pubspec 文件中链接到它?.dart_tool

“快速修复”菜单缺少导入建议的屏幕截图

screenshot of Quick Fix menu not suggesting import with AppLocalizations

flutter android-studio pubspec dart-analyzer flutter-localizations

评论


答:

8赞 Diana 8/30/2022 #1

我没有找到自动建议的解决方案。

import 'package:flutter_gen/gen_l10n/app_localizations.dart';

只需手动添加此导入即可。注意:它一开始仍然无法识别,所以我删除了这一行代码并再次开始输入。现在它起作用了。AppLocalizations.delegate

编辑:

由于您需要在很多地方导入,因此对我来说,解决方法是创建一个类,为我提供该类的实例。AppLocalizations

我创建了一个带有函数的类:common.dart

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



AppLocalizations? getApplocalizations(BuildContext context){
  return AppLocalizations.of(context);
}

我像这样从我的小部件中调用翻译:

title: Text(getApplocalizations(context)?.pageHomeTitle("Test") ?? ""),

这样,您只需在一个位置手动添加导入。

2赞 Ced 5/26/2023 #2

解决方案 1:导出一次

添加文件lib/localization.dart

和出口本地化

export 'package:flutter_gen/gen_l10n/home_localizations.dart';

解决方案2:不要使用合成包装

您不必拥有合成包,您可以将生成的类放在 lib 文件夹或任何其他文件夹中。

例:

在包/应用的根目录下添加 l10n.yaml。

arb-dir: lib/localization
output-dir: lib/localization/generated
output-localization-file: account_localizations.dart
output-class: AccountLocalizations
template-arb-file: account_en.arb
synthetic-package: false 
use-deferred-loading: true
nullable-getter: false