使用 bloc 创建全局加载屏幕的最佳方法?

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

GetMaterialApp 而不是MaterialApp

然后你就可以打电话了

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

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

【讨论】:

以上是关于使用 bloc 创建全局加载屏幕的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

具有多个firebase请求的flutter bloc cubit最佳实践

flutter_bloc :使 initialState 方法异步

飞溅/加载屏幕的最佳方式

Dart/Flutter 中 BLoC 模式的最佳实践

Flutter BLoC/Cubit STATE 类最佳实践

在基于 Django 的 GraphQL API 中为 postgres 表创建全局搜索字段的最佳方法?