问题:
我的showGeneralDialog创建方法如下: (我在动画显示对话框的onShow和onPop上, 所以我使用了TransitionBuilder而不是PageBuilder)
void _showSignOutAlert(BuildContext context) {
showGeneralDialog(
barrierColor: Colors.black.withOpacity(0.5),
transitionBuilder: (context, a1, a2, widget) {
return Transform.scale(
scale: a1.value,
child: Opacity(
opacity: a1.value,
child: CustomWidget(),
),
);
},
transitionDuration: Duration(milliseconds: 250),
barrierDismissible: true,
context: context,
pageBuilder: (context, animation1, animation2) {
return null;
},
);
}
我正在从一个StatelessWidget中调用_showSignOutAlert()
,并在参数中传递StatelessWidget-context。
我正在使用Provider-package,并在StatelessWidget上方定义了ChangeNotifierProvider-builder,该builder调用了_showSignOutAlert()
当尝试从showGeneralDialog()
创建的CustomWidget
中访问Provider时,它会提示找不到Provider。
来自于flutter关于showGeneralDialog()的说明文档:
此函数采用pageBuilder,用于构建路线的主要内容(通常是对话框小部件)。 对话框下方的内容会被[ModalBarrier]阻隔。 pageBuilder返回的小部件与最初从showGeneralDialog调用的位置不共享上下文。 如果对话框需要动态更新,请使用[StatefulBuilder]或自定义[StatefulWidget]。 pageBuilder参数不能为空。
问题:
我不知道如何继续操作以能够从CustomWidget
访问Provider?
Provider.of<>(context)
获取到provider
,就像你已经提到的那样。那么你有什么问题吗? - Vrushi Patel