Вот мой подход:
Stack(
children: <Widget>[
Container(
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage("https://cdn.pixabay.com/photo/2018/09/17/16/24/cat-3684184_960_720.jpg")
)
),
),
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Theme(
data: Theme.of(context).copyWith(canvasColor: Colors.transparent),
child: BottomNavigationBar(
items: [
BottomNavigationBarItem(
icon: Icon(Icons.photo_camera), title: Text("Test")),
BottomNavigationBarItem(
icon: Icon(Icons.photo_camera), title: Text("Test")),
],
),
)
],
)
],
);
Это заполнит весь экран (изображение чисто тривиальное, но вы его понимаете) фоновым изображением (нижний слой) и нижней панелью навигации внутри столбца, содержимое которого выровнено по end
.
В целях завершения я приведу ниже объяснение, которое я дал в комментариях к исходному вопросу.
Думая глубже, я понимаю, что это не будет доставлять то же самое
результат как желаемый, так как изображение двух девушек будет выше
панель навигации. Предлагаю использовать стэк с изображением двух девушек
в качестве нижнего слоя (нижней части стопки) и полноэкранного столбца
с MainAxisSize, установленным в MainAxisSize.max, и MainAxisAlignment, установленным в
MainAxisAlignment.end. Я мог бы написать это в ответе, но я не могу проверить
это прямо сейчас, поэтому я предпочитаю написать комментарий. Надеюсь, это поможет
UPDATE
В предыдущем решении все еще была тень navbar.
Этот метод сборки для экрана (виджета) отсутствует, поскольку я реализовал свой собственный BottomNavigationBar
с Row
:
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Container(
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(
"https://media.idownloadblog.com/wp-content/uploads/2016/04/macinmac-portrat-splash.jpg"))),
),
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
GestureDetector(
onTap: () {
print("Tap!");
},
child: Icon(
Icons.photo_camera,
size: 50,
)),
GestureDetector(
onTap: () {
print("Tap!");
},
child: Icon(
Icons.photo_camera,
size: 50,
)),
GestureDetector(
onTap: () {
print("Tap!");
},
child: Icon(
Icons.photo_camera,
size: 50,
)),
GestureDetector(
onTap: () {
print("Tap!");
},
child: Icon(
Icons.photo_camera,
size: 50,
)),
],
)
],
)
],
);
Вот скриншот с моего телефона:
Бонус
Вы можете получить полный экран, позвонив
SystemChrome.setEnabledSystemUIOverlays([]);
источник: здесь