for navigation to another screen and passing arguments without passing through the constructor => first: you have to define your route tables in main.dart file (your route names can be everything you want) => second: you have to call Navigator.of(context).pushNamed('your route name you want to move',{your arguments you want to passing}) within a method that you triger onTap property. in this case is selectCategory method in category_item.dart file. => third: you have to give your arguments that has passed in the destination route by the help of final routeArgs = ModalRoute.of(context)?.settings.arguments as Map<String, String>;. so you can extract and assign keys within routeArgs variable and access to the arguments. some notes for avoidig route name mismatching: => first: instead of writing for example 'category_meal' for route name of CategoryMealScreen you can have a constant within the CategoryMealScreen like this: static const routeName = 'category_meal'; => second: access to the defined const within the main.dart file like this: CategoryMealScreen.routeName: (ctx) => CategoryMealScreen(), => third: also you can achive the same way of getting route name inside the selectCategory method which is responsible for navigation => you can also have another file wich is just for your routes.(a dart file class with all your const route names) Removing home: property form MaterialApp inside the dart file: => first: you can have a default landing route in your routes which is responsible for moving to the home like this: '/' : (ctx) => your home screen overflow:hidden in flutter => ClipRRect() is used for containing something inside itself. using onUnknownRoute for undefined routes => if you want to redirect to for example 404 screen in case of not finding your desired route you can use this property in MaterialApp like this onUnknownRoute: (settings) { return MaterialPageRoute(builder: (ctx) => CategoriesScreen()); }, BottomNavigationBar example (sould be statefull) look at the tabs_screen.dart for sample => first: passing BottomNavigationBar inside your Scaffold as bottomNavigationBar property => second: pass your tabs you want to show in item property of bottomNavigationBar => third: this screen shoud be mark as your landing screen (main.dart file) and must be statefull because we want to change the content screen content based on navigationBarItem indexes