Merci pour ta proposition @Tazooou 
Du coup … en me creusant juste un peu plus la tête je suis arrivé à mes fins 
J’ai déclaré une classe BottomMenu :
import 'package:flutter/material.dart';
abstract class BottomRouter {
accueil();
displaySettings();
}
class BottomMenu extends StatelessWidget {
final BottomRouter router;
const BottomMenu({Key? key, required this.router}) : super(key: key);
_onClicked(int value) {
if (value == 0) {
router.accueil();
}
if (value == 2) {
router.displaySettings();
}
}
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Accueil',
),
BottomNavigationBarItem(
icon: Icon(Icons.new_releases),
label: 'test',
),
BottomNavigationBarItem(
icon: Icon(Icons.question_answer),
label: 'paramètres',
)
],
onTap: _onClicked,
selectedItemColor: Colors.red[800],
backgroundColor: Colors.black,
unselectedItemColor: Colors.white
);
}
}
J’implémente la classe BottomRouter dans mon NavigationDelegate :
class NavigationDelegate extends RouterDelegate<NavigationPath>
with ChangeNotifier, PopNavigatorRouterDelegateMixin<NavigationPath>
implements UserHomeRouter, LoginRouter, SettingsRouter, BottomRouter
Et dans les appels de mes vues, je rajoute le router (this) juste avant le viewmodel :
final loginScreen = LoginScreen(
this,
LoginViewModel(LoginUseCases(), this),
);
//
final settingsScreen =
SettingsScreen(this, SettingsViewModel(user!, this));
Et voici ma vue Settings par exemple :
(
import 'package:flutter/material.dart';
import '../navigation/bottom_menu.dart';
import 'settings_viewmodel.dart';
class SettingsScreen extends StatelessWidget {
final SettingsViewModel _viewModel;
final BottomRouter _router;
const SettingsScreen(this._router, this._viewModel, {Key? key})
: super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Center(child: Text("Pub & Moi")),
),
body: Text(_viewModel.email),
bottomNavigationBar: BottomMenu(
router: _router),
);
}
}
Je ne sais pas si c’est fait dans les règles de l’art mais ca à l’air de tourner 
Et après ca, rien de plus simple que :
- d’extraire le code du BottomMenu dans un viewModel
- d’afficher ou cacher certains boutons dans le bottom Nav Bar
- de rajouter le currentIndex pour savoir où l’on se trouve

Merci beaucoup pour ce post qui m’a permis d’y arriver 