Flutter:showDialog:构建函数返回null

nyp*_*ogi 2 dart flutter

我有一个StatefulWidget。然后,当我单击一个按钮时,它将显示一个警报对话框。当我实现时:

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

}
Run Code Online (Sandbox Code Playgroud)

一切正常。但是,当我将构建器中的内容转移到另一个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)".
Run Code Online (Sandbox Code Playgroud)

这是代码:

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"),
       );
    }
}
Run Code Online (Sandbox Code Playgroud)

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

anm*_*ail 5

Return在-之前添加单词LastVacDialog

builder: (BuildContext context) {
              return LastVacDialog(
                     ...
Run Code Online (Sandbox Code Playgroud)

由于错误表明状态,构建函数绝不能返回null。因此,通过在其前面添加return来返回LastVacDialog Widget。