делайте GlobalKey, привязываете к MaterialApp, к примеру либой get_it чтобы сделать Singleton, теперь в любом месте можно вызвать showSnackBar();
final _scaffoldMessengerKey = getIt<GlobalKey<ScaffoldMessengerState>>();
void showSnackBar({required String text}) {
_scaffoldMessengerKey.currentState
?..clearSnackBars()
..showSnackBar(
SnackBar(
content: Text(text),
action: SnackBarAction(
label: 'Закрыть',
textColor: Colors.yellow,
onPressed: () {},
),
),
);
}
class _AppState extends State<App> {
final rootScaffoldMessengerKey = getIt<GlobalKey<ScaffoldMessengerState>>();
@override
Widget build(BuildContext context) {
return MaterialApp.router(
scaffoldMessengerKey: rootScaffoldMessengerKey,
builder: (context, child) {
return child;
},
);
}
}