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, ], ); } }