3

I have a transparent AppBar and I want the body of the Scaffold to start from the top of the AppBar and end at the bottom. My code is as follows:

Scaffold(
      appBar: AppBar(
        foregroundColor: Colors.black,
        backgroundColor: Colors.transparent,
        elevation: 0,
        title: const Text('Test Page'),
      ),
      body: Container(color: Colors.teal),
    )

The result is:

enter image description here

And after adding extendBodyBehindAppBar: true as in the following code:

Scaffold(
      extendBodyBehindAppBar: true,
      appBar: AppBar(
        foregroundColor: Colors.black,
        backgroundColor: Colors.transparent,
        elevation: 0,
        title: const Text('Test Page'),
      ),
      body: Container(color: Colors.teal),
    )

The result is:

enter image description here

But I want it to start from the top of the AppBar as:

enter image description here

How can this be achieved?! Thanks in advance!

krishnaacharyaa
  • 14,953
  • 4
  • 49
  • 88
sm_sayedi
  • 326
  • 2
  • 17

2 Answers2

4

Try to wrap Scaffold inside SafeArea

Code Structure

SafeArea                      Add Parent SafeArea widget
|_ Scaffold
  |_ extendBodyBehindAppBar : true
  |_ appBar
krishnaacharyaa
  • 14,953
  • 4
  • 49
  • 88
2

Wrap the Scaffold in a SafeArea widget:

SafeArea(
        child: Scaffold(
          extendBodyBehindAppBar: true,
          appBar: AppBar(
            foregroundColor: Colors.black,
            backgroundColor: Colors.transparent,
            elevation: 0,
            title: const Text('Test Page'),
          ),
          body: Container(color: Colors.teal),
        ),
      )

The SafeArea is "a widget that insets its child by sufficient padding to avoid intrusions by the operating system."

More information in: https://api.flutter.dev/flutter/widgets/SafeArea-class.html

Wilson Toribio
  • 990
  • 1
  • 4
  • 15