Flutter:如何从显示对话框的类中获取上下文

dffbzjpn  于 2023-05-18  发布在  Flutter
关注(0)|答案(2)|浏览(197)

我有一个页面,一个小部件和一个提供者

页面中有一些元素,但有一个小部件我需要用于其他页面,所以这就是为什么它被分成另一个小部件。这个小部件只是一个对话框,所以它是一个没有任何状态的类:

class Difficulty {

  showModal() {
    var settingsController = context.watch<SettingsController>(); // this is what I'd need

    return showPlatformDialog(
    ...

因此,在我的页面中,我调用Difficulty().showPlatformDialog(),但我需要上一页的上下文或创建一个新的上下文。
最好的办法是什么?
1.传给Difficulty()
1.传给showModal()
1.创建一个StatefulBuilder或其他具有自己上下文的内容
方法与https://github.com/filiph/tictactoe相同

hts6caw3

hts6caw31#

您只需要将BuildContext作为参数传递给showPlatformDialog()
示例:

class Difficulty {

  showModal(BuildContext context) {
    var settingsController = context.watch<SettingsController>(); // this is what I'd need

    return showPlatformDialog(
                                ....

并从小部件调用函数

Difficulty().showPlatformDialog(context)

要回答您的查询,您可以以任何方式传递context,例如将其传递给函数或创建无状态/有状态小部件。
我更喜欢第三种方法

6jjcrrmo

6jjcrrmo2#

或者你可以使用全局级别的导航键,你可以在项目的任何地方使用上下文,而不必传递上下文。
你可以在这里查看我的答案,我解释了如何使用它。
https://stackoverflow.com/a/71922909/10936691

相关问题