我正在使用 CupertinoApp 小部件来包装我的应用程序,同时尝试在其中使用 Material TextFormField 小部件。
例如,当我触发文本选择模式(双击文本字段)时,我收到以下错误(因为它尝试打开需要材料本地化的覆盖小部件):
未找到 MaterialLocalizations。OverlayEntry 小部件需要由 Localizations 小部件祖先提供 MaterialLocalizations。
本地化用于生成材料库使用的许多不同的消息、标签和缩写。
要引入 MaterialLocalizations,请在应用程序的根目录使用 MaterialApp 以:自动包含它们,或添加带有 MaterialLocalizations 委托的 Localization 小部件。
问题是我不能使用 MaterialApp,因为我需要使用 Cupertino 风格的导航(CupertinoTabBar/CupertinoTabView 中的嵌套导航器),所以我需要使用本地化小部件方法。
但是下面的代码并没有解决问题:
void main() {
runApp(
Localizations(
child: CupertinoApp(
debugShowCheckedModeBanner: false,
home: App(), // <-- Main Screen, a Cupertino Tab Scaffold with 3 CupertinoTabViews
),
locale: Locale('en', 'US'),
delegates: <LocalizationsDelegate>[
// I assumed these were sufficient, but the runtime exception still persist.
DefaultMaterialLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
DefaultWidgetsLocalizations.delegate,
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这样做的正确方法是什么,是不是不可能在 CupertinoApp 中使用 Material …