Warm tip: This article is reproduced from serverfault.com, please click

dart-Flutter ARB本地化引发“在空值上调用吸气剂”错误

(dart - Flutter ARB localization throws "the getter was called on null" error)

发布于 2020-11-29 22:21:46

遵循官方国际化教程的提示,The getter was called on null尝试使用从ARB文件自动生成的自动翻译引擎(AppLocalizations.of(context).helloWrold时,我得到了

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class Login extends StatelessWidget {
  final loginAction;
  final String loginError;

  const Login(this.loginAction, this.loginError);

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        RaisedButton(
          onPressed: () {
            loginAction();
          },
          child: Text(AppLocalizations.of(context).helloWorld),
        ),
        Text(loginError ?? ''),
      ],
    );
  }
}
Questioner
mikes
Viewed
11
mikes 2020-11-30 06:25:51

解决此问题的方法是官方教程中缺少的一部分。此处没有描述要允许引擎运行,需要在main.dart文件中声明其他委托这可以从示例GitHub存储库中得出结论要解决此问题,请转到MaterialApp并添加缺少的委托AppLocalizations.delegate

import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_localizations/flutter_localizations.dart';


      child: MaterialApp(
          localizationsDelegates: [
            // ... app-specific localization delegate[s] here
            AppLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
          ],
          supportedLocales: [
            const Locale('en', ''),
            const Locale('pl', '')
          ],
          home: Scaffold(