gpt4 book ai didi

flutter - 空安全 AppLocalization 字符串的最佳方法

转载 作者:行者123 更新时间:2023-12-04 11:56:54 25 4
gpt4 key购买 nike


我正在使用 AppLocalizations.of(context).myString在我的 null 安全 flutter 应用程序中国际化字符串。
我的 IDE 告诉我 AppLocalizations.of(context)可以返回空值。处理这个问题的最佳方法是什么?有没有办法保证AppLocalizations.of(context)从不返回空?
目前,我采用以下方法:

AppLocalizations.of(context)?.myString ?? 'Fallback string'
完整的项目代码
pubspec.yaml
name: Sample Intl Project
description: A sample project
publish_to: 'none'
version: 1.0.0+1

environment:
sdk: ">=2.12.0-133.2.beta <3.0.0"

dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.17.0-nullsafety.2

dev_dependencies:
flutter_test:
sdk: flutter

flutter:
uses-material-design: true
generate: true

l10n.yaml
arb-dir: lib/l10n
template-arb-file: app_en_US.arb
output-localization-file: app_localizations.dart
l10n/app_en_US.arb
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "Greeting"
}
l10n/app_en.arb
{
"helloWorld": "Hello World!"
}
main.dart
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

void main() {
runApp(App());
}

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Sample App',
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: Home()
);
}
}

class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Text(
AppLocalizations.of(context)?.helloWorld ?? 'Hello World!'
),
);
}
}

最佳答案

如果你确定,那 AppLocalizations.of(context)总会回来的
有效 AppLocalizations实例(适用于您的示例应用程序),您可以使用:

AppLocalizations.of(context)!.myString
!运算符告诉 Dart, AppLocalizations.of(context)永远不会回来 null并表现得像来自可空的 AppLocalizations? 的类型转换到不可为空的 AppLocalizations .
注意:如果 AppLocalizations.of(context)返回 null在运行时,然后 AppLocalizations.of(context)!会抛出异常。

关于flutter - 空安全 AppLocalization 字符串的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65657443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com