Flutter

[Flutter]多言語化対応時に謎のエラー Cannot modify unmodifiable map

Flutterで多言語化対応している場合において、以下のコードを書くと、Cannot modify unmodifiable mapという謎の例外が発生します。

void main() {
  initializeDateFormatting().then(
    (dynamic _) => runApp(MyApp()),
 );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      supportedLocales: const [
        Locale('en'),
        Locale('ja'),
      ],
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
    );
  }
}

これでなぜCannot modify unmodifiable mapというエラーなのか。。。

対処

initializeDateFormatting()の処理が多言語化の処理とバッティングするため、initializeDateFormatting()の呼び出しを止めれば良いです。

ハマりました。

 

void main() {
  runApp(MyApp()),
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      supportedLocales: const [
        Locale('en'),
        Locale('ja'),
      ],
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
    );
  }
}

 

-Flutter

© 2024 かずのアプリときどきキャンプ飯 Powered by AFFINGER5