3

I have an issue with routing. I am using GetX and Get.arguments is always returning null. I am defining my routes in route_generator.dart

class RouteGenerator {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case AppRoutes.splashScreen:
        return GetPageRoute(
          page: () => const SplashPage(),
          binding: SplashBinding(),
          transition: Transition.fade,
        );
      case AppRoutes.unauthenticated:
        return GetPageRoute(
          page: () => const UnauthenticatedPage(),
          binding: UnauthenticatedBinding(),
          transition: Transition.fade,
        );
      case AppRoutes.login:
        return GetPageRoute(
          page: () => const LoginPage(),
          binding: LoginBinding(),
          transition: Transition.fade,
        );
      case AppRoutes.register:
        return GetPageRoute(
          page: () => const RegisterPage(),
          binding: RegisterBinding(),
          transition: Transition.fade,
        );
      case AppRoutes.dashboard:
        return GetPageRoute(
          page: () => DashboardPage(0),
          binding: DashboardBinding(),
          transition: Transition.fade,
        );
      case AppRoutes.editProfile:
        return GetPageRoute(
          page: () => const EditProfilePage(),
          binding: EditProfileBinding(),
          transition: Transition.rightToLeft,
        );
      default:
        return GetPageRoute(
          page: () => const SplashPage(),
          binding: SplashBinding(),
          transition: Transition.fade,
        );
    }
  }
}

here is my main.dart where I am specifying routes

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Test App',
      defaultTransition: Transition.rightToLeft,
      themeMode: ThemeMode.system,
      darkTheme: Themes.darkTheme,
      theme: Themes.lightTheme,
      initialRoute: AppRoutes.splashScreen,
      onGenerateRoute: RouteGenerator.generateRoute,
    );
  }

then when I am trying to launch a new screen using a route it works properly just I cannot retrieve arguments as they are null

list_view.dart

onTap: () => {
              Get.toNamed(AppRoutes.exerciseDetail, arguments: [
                {'exercise': exercise}
              ])
            },

print returns null detail_view_controller.dart

  @override
  void onInit() {
    dynamic arguments = Get.arguments;
    print(arguments);
    super.onInit();
  }

Any help or suggestions are appreciated, thanks :)

czaku
  • 829
  • 9
  • 20

2 Answers2

0
class RouteGenerator {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case AppRoutes.splashScreen:
        return GetPageRoute(
         
          // use settings.arguments
          page: () => const SplashPage(arguments: settings.arguments),
          binding: SplashBinding(),
          transition: Transition.fade,
        );
-1

Try passing arguments with out [ ]. Such as these arguments: {'exercise': exercise}

You can also try like this:

arguments:{'exercise': exercise, 'name':max}

And can access them:

Print(Get.arguments['name']);
// output max
ouflak
  • 2,458
  • 10
  • 44
  • 49
TarunNagaSai
  • 54
  • 1
  • 4
  • Tried that, always null, the object being passed is not a problem, even when passing basic int it is null – czaku Feb 15 '22 at 21:41