title: Warning: This application's locale, en.json_US, is not supported by all of its localization delegates
body: <p>new to localizations and i just finished implementing it on my app, it doesn't even read english , when i run my app it gives me this error, mind you i haven't used the localization to be represented in my app yet using buttons for choosing languages ... what am i doing wrong?</p>
  <p>here's my code</p>
  <pre><code>MaterialApp(
          locale: _locale,
          supportedLocales: [
            Locale('en.json', 'US'),
            Locale('ar', ''),
            Locale('ar', 'IQ'),
          ],
          localizationsDelegates: [
            DemoLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
          ],
          localeResolutionCallback: (deviceLocale, supportedLocales) {
            for (var locale in supportedLocales) {
              if (locale.languageCode == deviceLocale.languageCode &amp;&amp;
                  locale.countryCode == deviceLocale.countryCode) {
                return deviceLocale;
              }
            }
            return supportedLocales.first;
          },
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
              primaryColor: Color(0xffba0100),
              accentColor: Color(0xff188949),
              canvasColor: Colors.grey[100],
              textTheme: TextTheme().copyWith(
                bodyText1: TextStyle(
                  color: Colors.white,
                  fontSize: 17.0,
                  fontWeight: FontWeight.w700,
                ),
                bodyText2: TextStyle(
                  color: Colors.white,
                ),
                headline6: TextStyle(
                  color: Colors.black,
                  fontSize: 18.0,
                ),
              )),
          title: 'Tamata Online',
          initialRoute: '/',
          routes: {
            '/': (ctx) =&gt; LoadingScreen(
                initScreen), //TODO put it back to be LoadingScreen(initScreen)
            TabsScreen.id: (ctx) =&gt; TabsScreen(
                  filteredBySearch: filteredBySearch,
                  filteredBySpecialSearch: filteredBySpecialSearch,
                ),
            SettingsScreen.id: (ctx) =&gt; SettingsScreen(),
            CartScreen.id: (ctx) =&gt; CartScreen(),
            IntroScreen.id: (ctx) =&gt; IntroScreen(),
            ChooseLanguageScreen.id: (ctx) =&gt; ChooseLanguageScreen(),
            SpecialOffers.id: (ctx) =&gt; SpecialOffers(),
          },
        )
  </code></pre>
  <p>and heres my demoLocalization and delegate :</p>
  <pre><code>import 'dart:convert';
  
  import 'package:flutter/cupertino.dart';
  import 'package:flutter/material.dart';
  import 'package:flutter/services.dart';
  
  class DemoLocalizations {
    final Locale locale;
  
    DemoLocalizations(this.locale);
  
    static DemoLocalizations of(BuildContext context) {
      return Localizations.of&lt;DemoLocalizations&gt;(context, DemoLocalizations);
    }
  
    Map&lt;String, String&gt; _localizedValues;
  
    Future load() async {
      String jsonStringValues =
          await rootBundle.loadString('assets/languages/${locale.languageCode}');
  
      Map&lt;String, dynamic&gt; mappedJson = jsonDecode(jsonStringValues);
      _localizedValues =
          mappedJson.map((key, value) =&gt; MapEntry(key, value.toString()));
    }
  
    String getTranslatedValue(String key) {
      return _localizedValues[key];
    }
  
    static const LocalizationsDelegate&lt;DemoLocalizations&gt; delegate =
        _DemoLocalizationDelegate();
  }
  
  class _DemoLocalizationDelegate
      extends LocalizationsDelegate&lt;DemoLocalizations&gt; {
    const _DemoLocalizationDelegate();
  
    @override
    bool isSupported(Locale locale) {
      return ['en', 'ar', 'ar'].contains(locale.languageCode);
    }
  
    @override
    Future&lt;DemoLocalizations&gt; load(Locale locale) async {
      DemoLocalizations localization = DemoLocalizations(locale);
      await localization.load();
      return localization;
    }
  
    @override
    bool shouldReload(_DemoLocalizationDelegate old) =&gt; false;
  }
  </code></pre>