Вот один из способов добиться такого подвига:
Строки, столбцы и гибкие элементы могут иметь Expanded
дочернего элемента. Он получает коэффициент гибкости (который, согласно документации , определяет, «как гибкий дочерний элемент вписывается в доступное пространство»), и child
самого себя.
Скажем, наш «настоящий» контент находится в вертикальном расположении, например Column
. Тогда мы могли бы обернуть наш контент с помощью Stack
(документация [здесь]) (https://api.flutter.dev/flutter/widgets/Stack-class.html), что позволяет нам добавлять контент выше исходного контента нашего приложения, и добавьте новый Column
поверх него.
У него будет в основном два дочерних элемента Expanded
и заполнитель. Заполнитель гарантирует, что один виджет не имеет непрозрачности, расположенной над ним, а дочерние элементы Expanded
могут закрашивать остальную часть экрана непрозрачным цветом.
Вот код для иллюстрации идеи:
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: EdgeInsets.symmetric(
horizontal: 50.0,
),
child: Stack(
children: <Widget> [
Column(
children: <Widget>[
Container(
height: 240.0,
color: Colors.red,
),
Container(
height: 80.0,
width: double.infinity,
color: Colors.red,
child: Align(
alignment: Alignment.center,
child: Text("Your content here"),
),
),
Container(
height: 240.0,
color: Colors.red,
)
],
),
Column(
children: <Widget>[
Expanded(
child: Container(
color: Colors.black54,
),
),
Container(
height: 80.0
),
Expanded(
child: Container(
color: Colors.black54,
),
),
],
),
],
),
),
);
}
}