Flutter:showDialog:build函数返回null

6

我有一个 StatefulWidget。当我点击按钮时,它会显示一个警示框。实现时:

onTap: () {
    showDialog(
        context: context,
        builder: (BuildContext context) {
            return AlertDialog(
                  title: Text("Hello"),
            ); 
        }

}

一切都运行良好。但是当我将构建器中的内容转移到另一个StatefulWidget中时,就会出现以下错误:

A build function returned null.
I/flutter ( 3647): The offending widget is: Builder
I/flutter ( 3647): Build functions must never return null. To return an empty space that causes the building widget to
I/flutter ( 3647): fill available room, return "new Container()". To return an empty space that takes as little room as
I/flutter ( 3647): possible, return "new Container(width: 0.0, height: 0.0)".

以下是代码:

Here is the calling StatefulWidget:
onTap: () {

            showDialog(
              context: context,
              builder: (BuildContext context) {
                 LastVacDialog(
                  currentDose: currDose,
                  currentDate: currDate,
                  currentIndex: i,
                  setValue: changeDoseValueAndDate,
                ); 

              },
            );
          },

Here is the new StatefulWidget:
class LastVacDialog extends StatefulWidget {
    LastVacDialog({
    this.currentDose,
    this.currentDate,
    this.setValue,
    this.currentIndex,
  });

  final int currentDose;
  final DateTime currentDate;
  final void Function(int, DateTime, int) setValue;
  final currentIndex;

  @override
  LastVacDialogState createState() => new LastVacDialogState();
}

class LastVacDialogState extends State<LastVacDialog> {
    int _dose;
    DateTime _today;




   @override
   Widget build(BuildContext context) {
       return AlertDialog(
           title: Text("Last Dose"),
       );
    }
}

我的代码有问题吗?为了简单起见,我省略了一些变量。

1个回答

19
LastVacDialog 前面加上单词Return
builder: (BuildContext context) {
              return LastVacDialog(
                     ...

由于错误指出构建函数决不能返回null,因此请在您的 LastVacDialog Widget 前添加 return 来返回它。


谢谢!为什么需要返回值? - nypogi
1
Build Method 是一个创建小部件的函数,我们需要返回一个不能为 null 的值。 - anmol.majhail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接