title: How do i wrap a CupertinoApp in a Localizations widget so i can use Material widgets within it?
body: <p>I am using a CupertinoApp widget to wrap my app, while trying to use a Material TextFormField widget within it.</p>
  
  <p>When I for example trigger the text selection mode (Double tap the text field), I am getting the following error (because it tries to open an overlay widget that requires material localizations):</p>
  
  <h2>Error message</h2>
  
  <p>No MaterialLocalizations found.
  OverlayEntry widgets require MaterialLocalizations to be provided by a Localizations widget ancestor.</p>
  
  <p>Localizations are used to generate many different messages, labels,and abbreviations which are used by the material library. </p>
  
  <p>To introduce a MaterialLocalizations, either use a  MaterialApp at the root of your application to : include them automatically, or add a Localization widget with a MaterialLocalizations delegate.</p>
  
  <hr>
  
  <p>The problem is that I cannot use a MaterialApp as I need to use Cupertino style navigation (nested navigators inside CupertinoTabBar/CupertinoTabView), so i need to use the Localization widget approach.</p>
  
  <p>However the following code does not solve the problem:</p>
  
  <pre class="lang-dart prettyprint-override"><code>void main() {
    runApp(
      Localizations(
        child: CupertinoApp(
          debugShowCheckedModeBanner: false,
          home: App(), // &lt;-- Main Screen, a Cupertino Tab Scaffold with 3 CupertinoTabViews
        ),
        locale: Locale('en', 'US'),
        delegates: &lt;LocalizationsDelegate&gt;[
  
          // I assumed these were sufficient, but the runtime exception still persist.
          DefaultMaterialLocalizations.delegate,
          DefaultCupertinoLocalizations.delegate,
          DefaultWidgetsLocalizations.delegate,
        ],
      ),
    );
  }
  </code></pre>
  
  <p>My question is then, what is the proper way to do this, is it not possible to use a Material widget within a CupertinoApp?</p>
  
  <pre><code>I/flutter ( 7631): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
  I/flutter ( 7631): The following assertion was thrown building
  I/flutter ( 7631): _OverlayEntry-[LabeledGlobalKey&lt;_OverlayEntryState&gt;#1e5c6](dirty, dependencies:
  I/flutter ( 7631): [_LocalizationsScope-[GlobalKey#d1cfa]], state: _OverlayEntryState#ba2a3):
  I/flutter ( 7631): No MaterialLocalizations found.
  I/flutter ( 7631): _OverlayEntry widgets require MaterialLocalizations to be provided by a Localizations widget
  I/flutter ( 7631): ancestor.
  I/flutter ( 7631): Localizations are used to generate many different messages, labels,and abbreviations which are used
  I/flutter ( 7631): by the material library. 
  I/flutter ( 7631): To introduce a MaterialLocalizations, either use a  MaterialApp at the root of your application to
  I/flutter ( 7631): include them automatically, or add a Localization widget with a MaterialLocalizations delegate.
  I/flutter ( 7631): The specific widget that could not find a MaterialLocalizations ancestor was:
  I/flutter ( 7631):   _OverlayEntry-[LabeledGlobalKey&lt;_OverlayEntryState&gt;#1e5c6]
  I/flutter ( 7631): The ancestors of this widget were:
  I/flutter ( 7631):   Stack(alignment: AlignmentDirectional.topStart, fit: expand, overflow: clip)
  I/flutter ( 7631):   _Theatre
  I/flutter ( 7631):   Overlay-[LabeledGlobalKey&lt;OverlayState&gt;#362c7]
  I/flutter ( 7631):   _FocusScopeMarker
  I/flutter ( 7631):   Semantics(container: false, properties: SemanticsProperties, label: null, value: null, hint: null,
  I/flutter ( 7631):   hintOverrides: null)
  I/flutter ( 7631):   FocusScope
  I/flutter ( 7631):   AbsorbPointer(absorbing: false)
  I/flutter ( 7631):   Listener(listeners: [down, up, cancel], behavior: deferToChild)
  I/flutter ( 7631):   Navigator-[GlobalObjectKey&lt;NavigatorState&gt; _WidgetsAppState#2397a]
  I/flutter ( 7631):   DefaultTextStyle(inherit: false, color: Color(0xff000000), family: .SF Pro Text, size: 17.0,
  I/flutter ( 7631):   letterSpacing: -0.4, decoration: TextDecoration.none, softWrap: wrapping at box width, overflow:
  I/flutter ( 7631):   clip)
  I/flutter ( 7631):   Title(color: Color(0xff007aff))
  I/flutter ( 7631):   Directionality(textDirection: ltr)
  I/flutter ( 7631):   _LocalizationsScope-[GlobalKey#d1cfa]
  I/flutter ( 7631):   Semantics(container: false, properties: SemanticsProperties, label: null, value: null, hint: null,
  I/flutter ( 7631):   textDirection: ltr, hintOverrides: null)
  I/flutter ( 7631):   Localizations(locale: en_US, delegates: [DefaultCupertinoLocalizations.delegate(en_US),
  I/flutter ( 7631):   DefaultWidgetsLocalizations.delegate(en_US)])
  I/flutter ( 7631):   MediaQuery(MediaQueryData(size: Size(411.4, 683.4), devicePixelRatio: 2.6, textScaleFactor: 1.0,
  I/flutter ( 7631):   platformBrightness: Brightness.light, padding: EdgeInsets(0.0, 24.0, 0.0, 0.0), viewInsets:
  I/flutter ( 7631):   EdgeInsets.zero, alwaysUse24HourFormat: false, accessibleNavigation: falsedisableAnimations:
  I/flutter ( 7631):   falseinvertColors: falseboldText: false))
  I/flutter ( 7631):   WidgetsApp-[GlobalObjectKey _CupertinoAppState#5df27]
  I/flutter ( 7631):   IconTheme(IconThemeData#33904(color: Color(0xff007aff)))
  I/flutter ( 7631):   _InheritedCupertinoTheme
  I/flutter ( 7631):   CupertinoTheme
  I/flutter ( 7631):   ScrollConfiguration(behavior: _AlwaysCupertinoScrollBehavior)
  I/flutter ( 7631):   CupertinoApp
  I/flutter ( 7631):   Directionality(textDirection: ltr)
  I/flutter ( 7631):   _LocalizationsScope-[GlobalKey#dfb7d]
  I/flutter ( 7631):   Semantics(container: false, properties: SemanticsProperties, label: null, value: null, hint: null,
  I/flutter ( 7631):   textDirection: ltr, hintOverrides: null)
  I/flutter ( 7631):   Localizations(locale: en_US, delegates: [DefaultMaterialLocalizations.delegate(en_US),
  I/flutter ( 7631):   DefaultCupertinoLocalizations.delegate(en_US), DefaultWidgetsLocalizations.delegate(en_US)])
  I/flutter ( 7631):   _InheritedModel&lt;AppModel&gt;
  I/flutter ( 7631):   AnimatedBuilder(animation: Instance of 'AppModel')
  I/flutter ( 7631):   ScopedModel&lt;AppModel&gt;
  I/flutter ( 7631):   [root]
  I/flutter ( 7631): 
  I/flutter ( 7631): When the exception was thrown, this was the stack:
  I/flutter ( 7631): #0      debugCheckHasMaterialLocalizations.&lt;anonymous closure&gt; (package:flutter/src/material/debug.dart:124:7)
  I/flutter ( 7631): #1      debugCheckHasMaterialLocalizations (package:flutter/src/material/debug.dart:127:4)
  I/flutter ( 7631): #2      _MaterialTextSelectionControls.buildToolbar (package:flutter/src/material/text_selection.dart:135:12)
  // ....
  </code></pre>