【问题标题】:Best way to create a global loading screen with bloc?使用 bloc 创建全局加载屏幕的最佳方法?
【发布时间】:2021-03-18 04:30:42
【问题描述】:

我尝试在与其第一个脚手架堆叠的小部件树顶部创建一个加载屏幕小部件。它在那个脚手架内工作正常。当我 navigator.push 到另一个脚手架并尝试触发加载屏幕时,它不会出现在第二个脚手架上。它只适用于第一个脚手架。

我看到了一种使用单个脚手架应用程序的方法。但它不适合我的情况。有什么方法可以创建一个影响其下方所有脚手架的堆栈或使用全局加载屏幕的最佳方法是什么,对话框与块

【问题讨论】:

  • “Always-on-top”模态在 Flutter 中通过 Navigator 实现。 Dialogs 之类的东西只是导航器,无论如何它们都能很好地屏蔽屏幕。
  • 另一种方法是将MaterialApp 包装在Stack 中。根据您在应用程序顶部呈现的小部件,这有点难以正确处理,因为MaterialAppThemeData 提供给小部件。您必须进行一些手动样式设置。

标签: flutter bloc scaffold flutter-widget


【解决方案1】:

创建全局加载屏幕或对话框的最佳方法是使用get package 路由管理功能,您只需将小部件树包裹起来

GetMaterialApp 而不是MaterialApp

然后你就可以打电话了

Get.generalDialog(...)Get.dialog(...)

应用程序中的任何位置。如果你决定使用其他方式,比如 Flutter 内置的 showDialog(...) 并且需要访问基础 MaterialApp 的上下文,你可以调用 Get.context

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 2019-12-24
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多