【发布时间】:2021-08-22 18:51:30
【问题描述】:
我正在使用 Flutter 构建一个 Web 应用程序,我想在我的新应用程序上使用 Flutter 的国际化功能。我正在关注Flutter-Tutorial,并尝试使用 arb 文件设置应用程序标题。正如教程中提到的,app_localization.dart 文件是为 'en' 和 'de' 正确创建的。然而,我在下面的代码中得到了一个空指针异常。
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MyApp',
localizationsDelegates: [
AppLocalizations.delegate, // Post-EDIT due to croxx5f
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: [
Locale('de', ''),
Locale('en', ''),
],
theme: ThemeData(
primarySwatch: Colors.red,
),
home: Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context)!.appTitle),
),
body: Text(AppLocalizations.of(context)!.appTitle)
),
);
}
}
其实AppLocalizations.of(context)返回null。
【问题讨论】:
-
好的,除了缺少 AppLocalization.delegate 之外,我注意到我忘记添加 'intl: ^0.17.0 # Add this line'。在那之后我得到了 NPE,但是在将标题固定为一个常量字符串之后,它就消失了。谢谢!
标签: flutter dart localization internationalization