Flutter: showDialog: функция сборки вернула ноль

nypogi спросил: 03 ноября 2018 в 09:36 в: dart

У меня есть 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"),
       );
    }
}

Что-то не так с моим кодом? Я просто опустил некоторые переменные для простоты.

0 ответов