在没有上下文的情况下创建 Flutter Alert/Dialog

Creating a Flutter Alert/Dialog Without Context

我目前有一个 Flutter 应用程序,它使用在后台运行的计时器跟踪用户在该应用程序上花费的时间。用户可以限制他们在应用程序中花费的时间。每分钟,计时器都会检查用户是否超过了他们的时间限制。如果是这样,我想显示一个对话框或警告告诉用户这一点。

问题是计时器无法访问当前上下文,因此无法创建我的对话。有办法解决这个问题吗?

您可以通过创建自定义对话框管理器和定位器来实现。

您可以在此处阅读完整教程:https://medium.com/flutter-community/manager-your-flutter-dialogs-with-a-dialog-manager-1e862529523a

有一个包可以让您在不需要业务层的 BuildContext 的情况下显示对话框。它叫做 OneContext。

该包还适用于页面导航、覆盖和其他不需要 BuildContext 的东西。

看看:https://pub.dev/packages/one_context

使用示例:

// example dialog
OneContext().showDialog(
    // barrierDismissible: false,
    builder: (_) => AlertDialog( 
        title: new Text("The Title"),
        content: new Text("The Body"),
    )
);
// example snackBar
OneContext().showSnackBar(
    builder: (_) => SnackBar(content: Text('My awesome snackBar!'))
);

有一个名为 Stacked_services

的软件包

它提供:NavigationServiceDialogServiceSnackbarService