小编Hel*_*rre的帖子

如何将 CupertinoApp 包装在 Localizations 小部件中,以便我可以在其中使用 Material 小部件?

我正在使用 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 …

dart flutter

7
推荐指数
2
解决办法
3396
查看次数

标签 统计

dart ×1

flutter ×1