Change gray overlay background of BottomSheet

5,402

Solution 1

New Flutter UPDATE allows you to change the barrierColor in showModalBottomSheet()

showModalBottomSheet(
      barrierColor: Colors.yellow.withOpacity(0.5),

Solution 2

You can actually change this but in order to do so you have to create a copy of this widget file in order to customize it. (steps below are for vscode)

However, by doing this, the widget won't be automatically updated by Flutter because it'd no longer be part of the SDK.

Create A Copy of A Widget To Customize

  1. Right-click widget and select Go to definition - this will bring you to the widget's original file

  2. Copy all of the code and paste it into a new .dart file with the same name - you'll notice there will now be errors due to a lack of dependencies.

  3. In the case of BottomSheet you just need to add import 'package:flutter/material.dart';

  4. Now import it like so import 'package:projectname/bottom_sheet.dart' as my; - the as my allows it to use the same .dart file name

  5. Now when referencing it just add my. prior like so

my.showModalBottomSheet(
        context: (context),
        isScrollControlled: false,...

Customize Background Overlay Color

Now in bottom_sheet.dart just search for barrierColor and change Colors.black54 to whatever color you want!


I hope this will help anyone in the future!


Related Question

How to change the background color of BottomSheet in Flutter?

Solution 3

Short answer : you can't.

The color is hardcoded into the _ModalBottomSheetRoute class (as linked by @pskink) and there is no way to change its value.

Share:
5,402
S.D.
Author by

S.D.

Updated on December 07, 2022

Comments

  • S.D.
    S.D. over 1 year

    Is there a way to change the overlay background color when using showModalBottomSheet?

    Right now the color is always a gray color, but I want to use a different color like green as shown below.

    changing color

    Here is the code used in the demo for reference

            showModalBottomSheet<void>(context: context, builder: (BuildContext context) {
              return Container(
                child: Padding(
                  padding: const EdgeInsets.all(32.0),
                  child: Text('This is the modal bottom sheet. Tap anywhere to dismiss.',
                    textAlign: TextAlign.center,
                    style: TextStyle(
                      color: Theme.of(context).accentColor,
                      fontSize: 24.0
                    )
                  )
                )
              );
            });
    
  • tyirvine
    tyirvine almost 4 years
    Perfect! That makes it a lot easier
  • AL MAMUN
    AL MAMUN over 2 years
    but, not change this status bar color.How this possible