Ошибка Flutter: дочерние элементы столбца не должны содержать никаких нулевых значений, но нулевое значение было найдено по индексу 0

#android-studio #flutter #flutter-layout

#android-studio #flutter #flutter-layout

Вопрос:

Я создал приложение в Android Studio для перехода с одного экрана на другой.Здесь два виджета без состояния создаются в виде двух экранов, и оба содержат кнопку для перехода по страницам друг к другу. Однако, когда я запускаю приложение, на моем телефоне Android создается красный экран, и я получаю сообщение об ошибке

exception 'Column's children must not contain any null values, but a null value was found at index 0'.

Я предоставил свой код ниже:

ПЕРВЫЙ ЭКРАН

 class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("First Screen"),
      ),
      body: Container(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              center(
                decoration: new BoxDecoration(
                  image: new DecorationImage(
                    image: new AssetImage('assets/new 7wonders.jpg'),
                    fit: BoxFit.cover,
                  ),
                ),
              ),
              Text('New 7 Wonders',
                style: TextStyle(fontSize: 40, fontStyle: FontStyle.italic),
              ),
              RaisedButton(
                child: Text("Bang Here"),
                onPressed: (){
                  Navigator.push(context, MaterialPageRoute(builder: (context) => SecondScreen()));
                },
                color: Colors.red,
                textColor: Colors.yellow,
                padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
                splashColor: Colors.grey,
              )
            ],
          ),
        ),
      ),
    );
  }

  center({BoxDecoration decoration}) {}
}
  

ВТОРОЙ ЭКРАН

 class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Second Screen"),
      ),
      body: RaisedButton(
        child: Text("Go to First page"),
        onPressed:() {
          Navigator.pop(context);
        },
      ),
    );
  }
}

  

Комментарии:

1. Если мой ответ помог вам решить проблему, указанную в вашем исходном сообщении, пожалуйста, примите его. Если нет, предоставьте более подробную информацию о том, почему это не так.

2. Это помогло мне. Решение было найдено на месте.

Ответ №1:

Ваш center метод должен вернуть виджет, который в данный момент он предоставляет null Column .

Сделайте это вместо:

  Widget center() {
    // return a decorated box widget which gives you the decoration property
    return Image(
          image: AssetImage(
          'assets/new 7wonders.jpg',),
           fit: BoxFit.cover,
     );
  }
}
  

Затем используйте в своем Column подобном :

 Container(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
             // call the center method which returns a Widget
              center(),
              Text(
                'New 7 Wonders',
                style: TextStyle(fontSize: 40, fontStyle: FontStyle.italic),
              ),
              RaisedButton(
                child: Text("Bang Here"),
                onPressed: () {
                  Navigator.push(context,
                      MaterialPageRoute(builder: (context) => SecondScreen()));
                },
                color: Colors.red,
                textColor: Colors.yellow,
                padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
                splashColor: Colors.grey,
              )
            ],
          ),
        ),
      ),
  

Комментарии:

1. Код выполняется, но, к сожалению, это изображение ресурса не отображается на первом экране.

2. Нет, сэр, изображение ресурса по-прежнему не отображается на первом экране, я даже изменил изображение ресурса и решил включить сетевое изображение, но изображение по-прежнему не загружается на первом экране.

Ответ №2:

вы должны вернуть любой виджет в center

 center({BoxDecoration decoration}) {
   return Container();
}
  

Комментарии:

1. Код выполняется, но, к сожалению, это изображение ресурса не отображается на первом экране.

Ответ №3:

Вы пытались Center вместо center этого написать в строке 24? И в центре должно быть, вернет, например Containter()

Ответ №4:

В 24-й строке вы вернули нулевое значение. Вы можете реализовать метод center следующим образом;

 return Container();
  

Ответ №5:

 Remove center use this

Container(
   height: 100,       // height and width according to your ui
     width:100,
       child:Image.asset(('assets/new7wonders.jpg',fit: BoxFit.cover,), // use for local image from asset and please change image name in code as well as in asset folder.there should  not be space between image name .
      
 ),  
  

Комментарии:

1. Код выполняется, но, к сожалению, это изображение ресурса не отображается на первом экране.

2. Я проверю это позже. Я обновлю вас, не беспокойтесь об этом.