如何在Flutter中显示AlertDialog

时间:2019-02-01 06:59:55

标签: flutter

我开始学习Flutter,并且正在使用计算器应用程序。当我想阻止用户执行某些操作(比如说被零除)时,我想显示一个显示错误消息的对话框。这需要上下文,但是当我传递上下文时,会导致错误。

我看到的显示警报对话框的示例似乎都是按下按钮的结果,并且使用了创建应用程序小部件时出现的上下文。我的情况是该对话框显示在小部件创建之外,并且上下文在那里无效。

如何显示对话框,这是用户采取的措施的结果,而不是单击已为该应用程序创建的小部件中的按钮?一个例子会很好。

我得到的错误如下:

I / flutter(6990):在空值上调用了getter'modalBarrierDismissLabel'。

虽然我从阅读的内容中推测出我需要重新组织代码并重新定位“警告对话框”,但我不知道该怎么做。我看到的示例是在构造上创建的Widget的结果,该Widget因此使用了当时可用的上下文。就我而言,我试图创建警报对话框是由于用户执行操作而不是按下窗口小部件按钮的结果。 我的一些相关代码如下:

} else if (pendingOperator == "/") {
    if (secondValue != 0) {
      setNewValue(Decimal.parse(firstValue.toString()) /
          Decimal.parse(resultString));
    } else {
      _showAlert(context, "Divide by zero is invalid");
    }
  }



class MyAppState extends State<MyApp> {
Decimal firstValue;
String pendingOperator;
bool clearCurrentValue = true;
String resultString = "0";

void _showAlert(BuildContext context, String text) {
  showDialog(
    context: context,
    builder: (context) => AlertDialog(
          title: Text("Error"),
          content: Text(text),
        ));
}

@override
Widget build(BuildContext context) {
return new MaterialApp(
    home: new SafeArea(
  child: new Material(
    color: Colors.black,
    child: Column(

1 个答案:

答案 0 :(得分:0)

显示警报的需要间接是按下按钮的结果。当创建该按钮,通过上下文所调用的函数,并使用该上下文中调用_showAlert。