【发布时间】:2020-02-20 21:32:25
【问题描述】:
我们希望在一些异步处理(例如网络进程)之后显示一个 AlertDialog。
当从外部类调用“showAlertDialog()”时,我想在没有上下文的情况下调用它。有什么好办法吗?
class SplashPage extends StatelessWidget implements SplashView {
BuildContext _context;
@override
Widget build(BuildContext context) {
this._context = context;
...
}
我考虑过上述方法,但我担心会出现一些问题。
帮助
我当前的代码
class SplashPage extends StatelessWidget implements SplashView {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: MyStoreColors.eats_white1_ffffff,
body: Center(
child: new SvgPicture.asset('assets/ic_splash.svg'),
),
);
}
@override
void showAlertDialog() {
showDialog<void>(
context: /*How to get context?*/,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Not in stock'),
content: const Text('This item is no longer available'),
actions: <Widget>[
FlatButton(
child: Text('Ok'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
@override
void moveToHomeContainer() {
}
@override
void moveToLoginContainer() {
}
}
【问题讨论】:
-
你会在哪里使用
showAlertDialog?您可以将context作为参数传递 -
是的,你为什么不使用
showAlertDialog(BuildContext context)? -
我尝试使用类似于 MVP 的架构。在此页面中,我想在视图绑定到演示者时检查应用程序版本。并且想在presenter中将版本检查的错误信息输出到
view.showAlertDialog()。 -
您是说在
build()中调用presenter.checkAppVersion(context)吗?
标签: flutter statelesswidget flutter-alertdialog