Home > Back-end >  Flutter, cannot change container color
Flutter, cannot change container color

Time:01-30

I have a screen that has a SafeArea widget on top and then everything inside is wrap with container and pass as a body to safearea. But when I want to change the container color, it stays always white.

Did I implement this UI wrong? How can I change this color?

class _MeetingScreenState extends State<MeetingScreen> {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      left: false,
      right: false,
      child: Container(
// Container color to change
        color: Colors.black87,
        child: Material(
          child: Padding(
            padding: const EdgeInsets.all(16),
            child: Column(
              children: [
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      ActionIconButton(
                          iconState: false,
                          iconStateOn: Icons.cameraswitch_outlined,
                          iconStateOff: Icons.cameraswitch_outlined),
                      Column(
                        children: const [
                          Text('Meeting title'),
                          // TODO implement meeting time
                          Text('04:28')
                        ],
                      ),
                      ActionIconButton(
                          iconState: _switchCamera,
                          iconStateOn: Icons.volume_up_outlined,
                          iconStateOff: Icons.volume_off_outlined,
                      iconBackgroundColor: AppColors.white,
                      activeIconColor: AppColors.white,
                      inactiveColor: AppColors.whiteWithOpacity,)
                    ],
                  ),
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

CodePudding user response:

Material also applies color and it is over the one of the Container.

You can remove the Container and give your color to the Material widget:

Change

Container(
  // Color to change
  color: Colors.black87,
  child: Material(
    // ...
  ),
),

with

Material(
  // Color to change
  color: Colors.black87,
  // ...
),

CodePudding user response:

The Material widget is responsible for:

Clipping: If clipBehavior is not Clip.none, Material clips its widget sub-tree to the shape specified by shape, type, and borderRadius. By default, clipBehavior is Clip.none for performance considerations. See Ink for an example of how this affects clipping Ink widgets. Elevation: Material elevates its widget sub-tree on the Z axis by elevation pixels, and draws the appropriate shadow. Ink effects: Material shows ink effects implemented by InkFeatures like InkSplash and InkHighlight below its children.

so need to add the colors in the material widget as per Valentin Vignal Answer . i hope you understand .

Material(
  // Color to change
  color: Colors.black87,
  // ...
),
  • Related