#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. Я проверю это позже. Я обновлю вас, не беспокойтесь об этом.