我正在使用Flutter构建一个Web应用程序,我想在我的新应用程序上使用flutter的国际化功能。我遵循Flutter-Tutorial,并尝试使用arb-file设置应用程序标题。正如本教程中提到的,为'en‘和'de’正确创建了app_localization.dart-files。然而,我在下面的代码中得到了一个空指针异常。
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。
发布于 2021-08-22 19:10:27
您应该在MaterialApp中添加AppLocalizations:
MaterialApp(
...
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
],
supportedLocales: AppLocalizations.supportedLocales,
...https://stackoverflow.com/questions/68884259
复制相似问题