我正在使用Flutter构建一个Web应用程序,我想在我的新应用程序上使用flutter的国际化特性。我正在使用Flutter-Tutorial,并尝试使用arb-file设置app-title。正如教程中提到的,为“en”和“de”正确创建了app_localization. dart文件。然而,我在以下代码中遇到了一个空指针异常。
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(上下文)返回空值。
4条答案
按热度按时间wxclj1h51#
您应该在MaterialApp中添加
AppLocalizations
:vxqlmq5t2#
在我的案例中,出于测试目的,将
Scaffold()
用作MaterialApp()
的home:
导致了该问题。一旦我创建了一个单独的
HomePage()
小部件并将其用作home: HomePage()
,问题就没有了。错误代码:
良好代码:
gfttwv5a3#
这对我很有帮助。我有一个Cupertino应用程序在MaterielApp之上,这覆盖了MaterielApp和我的应用程序本地化。(内容)为空
https://github.com/flutter/flutter/issues/26365#issuecomment-523536339
jvlzgdj94#
添加l10n.yaml: