InheritedWidgets以及Providers的范围都限于小部件树。无法在该树之外访问它们。
问题是,使用
showDialog类似的功能,对话框位于不同的小部件树中-可能无法访问所需的提供程序。
因此,有必要在新的窗口小部件树中添加所需的提供程序:
void myShowDialog() { final myModel = Provider.of<MyModel>(context, listen: false); showDialog( context: context, builder: (_) { return Provider.value(value: myModel, child: SomeDialog()); }, );}


