I was dealing with the ScaffoldMessenger.of(context).showMaterialBanner method and it needs a MaterialBanner widget as parameter.
Goal
In my case I need to put an empty MaterialBanner widget but with a custom height (less than default).
In few words override the original MaterialBanner build method.
What I tried
so I thought that I had to extend a StatefulWidget implementing MaterialBanner:
class MiniBanner extends StatefulWidget implements MaterialBanner {
const MiniBanner({Key? key}) : super(key: key);
@override
List<Widget> get actions => [const SizedBox()];
@override
Animation<double>? get animation => null;
@override
Color? get backgroundColor => Colors.amber;
@override
Widget get content => const SizedBox();
@override
TextStyle? get contentTextStyle => null;
@override
double? get elevation => 0;
@override
bool get forceActionsBelow => false;
@override
Widget? get leading => null;
@override
EdgeInsetsGeometry? get leadingPadding => EdgeInsets.zero;
@override
VoidCallback? get onVisible => null;
@override
OverflowBarAlignment get overflowAlignment => OverflowBarAlignment.end;
@override
EdgeInsetsGeometry? get padding => EdgeInsets.zero;
@override
MaterialBanner withAnimation(Animation<double> newAnimation, {Key? fallbackKey}) {
return MaterialBanner(
key: key ?? fallbackKey,
content: content,
contentTextStyle: contentTextStyle,
actions: actions,
elevation: elevation,
leading: leading,
backgroundColor: backgroundColor,
padding: padding,
leadingPadding: leadingPadding,
forceActionsBelow: forceActionsBelow,
overflowAlignment: overflowAlignment,
animation: newAnimation,
onVisible: onVisible,
);
}
@override
State<MiniBanner> createState() => _MiniBannerState();
}
class _MiniBannerState extends State<MiniBanner> {
@override
Widget build(BuildContext context) {
// I want the code to go here to build a smaller MaterialBanner
return Container(
color: widget.backgroundColor,
height: 10,
);
}
}
But my code keep going to the original MaterialBanner method. Maybe I'm missing some knowledge about extending stateful widgets.