Чтобы поместить тело под AppBar и сделать прозрачным AppBar , требуется Stack в качестве тела. Стек должен содержать панель приложений, а не эшафот.
body: Stack(
children: <Widget>[...]
),
Первый элемент в стопке находится внизу, а последующие элементы находятся над ним.Если панель приложений прозрачна, она будет работать, но это не так.Если зеленый цвет AppBar покажет вам, почему.
return Scaffold(
body: Stack(
children: <Widget>[
Container(
color: Colors.blue,
),
AppBar(title: Text('Hello world'),
backgroundColor: Colors.green,
)
],);
Как вы можете видеть, AppBar занимает весь экран и будет поглощать любые сенсорные события.
Чтобы исправить это, используйте Виджет положения ,
body: Stack(
children: <Widget>[
Container(
color: Colors.blue,
),
new Positioned(
top: 0.0,
left: 0.0,
right: 0.0,
child: AppBar(title: Text('Hello world'),
backgroundColor: Colors.green,
),),
], )
И вы получите это:
Хорошо, теперь сделайте AppBar прозрачным и удалите тень:
body: Stack(
children: <Widget>[
Container( //My container or any other widget
color: Colors.blue,
),
new Positioned( //Place it at the top, and not use the entire screen
top: 0.0,
left: 0.0,
right: 0.0,
child: AppBar(title: Text('Hello world'),
backgroundColor: Colors.transparent, //No more green
elevation: 0.0, //Shadow gone
),),
], )
Надеюсь, это поможет ...