首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >flutter gen-l10n与l10n.yaml

flutter gen-l10n与l10n.yaml
EN

Stack Overflow用户
提问于 2021-10-24 15:16:05
回答 1查看 26关注 0票数 0

我的代码中有下面这一行:

代码语言:javascript
运行
复制
AppLocalizations.of(context).homeScreen

只要我手动运行flutter gen-l10n,这一行就可以正常工作。

我现在已经创建了一个l10n.yaml文件,所以我不需要每次都手动运行该命令。它只包含两行:

代码语言:javascript
运行
复制
arb-dir: lib/l10n
template-arb-file: app_en.arb

现在,本地化是通过flutter run自动完成的。但是,Android Studio会报告这一行,并强制我添加一个感叹号(或.?)。

代码语言:javascript
运行
复制
AppLocalizations.of(context)!.homeScreen
                            ^ note this

原因是生成了不同的代码。

使用l10n.yaml (我的机器上的app_localizations.dart的第68行)生成的代码:

代码语言:javascript
运行
复制
  static AppLocalizations? of(BuildContext context) {
    return Localizations.of<AppLocalizations>(context, AppLocalizations);
  }
                         ^ note the question mark

使用命令行(以及我机器上的app_localizations.dart的第68行)生成的代码:

代码语言:javascript
运行
复制
  static AppLocalizations of(BuildContext context) {
    return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
  }
                         ^ no question mark            exclamation mark ^

为什么使用l10n.yaml会有这样的不同?有没有办法解决这个问题,这样我就不需要在代码中到处添加感叹号了?

我试图通过查看flutter run --verbose的输出来弄清楚flutter run使用的是什么命令行,但是里面什么都没有。

EN

回答 1

Stack Overflow用户

发布于 2021-10-24 15:31:11

!是声音空安全的一部分。!表示该值不为null。

Learn more about null safety here

对于本地化,

代码语言:javascript
运行
复制
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

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

extension AppLocalizationsX on BuildContext {
  AppLocalizations get l10n => AppLocalizations.of(this)!;
}

使用上面的代码作为BuildContext上的扩展进行本地化,

代码语言:javascript
运行
复制
context.l10n.homeScreen

l10n.yaml文件

代码语言:javascript
运行
复制
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69698107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档