generateModelRoutes<T extends BaseModel> function

List<GoRoute> generateModelRoutes<T extends BaseModel>()

Implementation

List<GoRoute> generateModelRoutes<T extends BaseModel>() {
  String typeName = getTypeName<T>();
  return [
    GoRoute(
      path: '/${typeName}_list_page',
      name: '${typeName}_list_page',
      pageBuilder: (context, state) {
        return CustomTransitionPage(
          transitionsBuilder: (context, animation, secondaryAnimation, child) {
            return SlideTransition(
              position: Tween<Offset>(
                begin: const Offset(1.25, 0.0),
                end: Offset.zero,
              ).animate(animation),
              child: child,
            );
          },
          child: SliverListPage<T>(
            middleWidgetsList: [SearchSection()],
          ),
        );
      },
    ),
    GoRoute(
      path: '/${typeName}_form_page',
      name: '${typeName}_form_page',
      pageBuilder: (context, state) {
        final item = state.extra as T?;
        return CustomTransitionPage(
          transitionsBuilder: (context, animation, secondaryAnimation, child) {
            return SlideTransition(
              position: Tween<Offset>(
                begin: const Offset(1.25, 0.0),
                end: Offset.zero,
              ).animate(animation),
              child: child,
            );
          },
          child: ReactiveFormPage<T>(item: item),
        );
      },
    ),
    GoRoute(
      path: '/${typeName}_detail_page',
      name: '${typeName}_detail_page',
      pageBuilder: (context, state) {
        final item = state.extra as T;
        return CustomTransitionPage(
          transitionsBuilder: (context, animation, secondaryAnimation, child) {
            return SlideTransition(
              position: Tween<Offset>(
                begin: const Offset(1.25, 0.0),
                end: Offset.zero,
              ).animate(animation),
              child: child,
            );
          },
          child: DetailPage<T>(item: item),
        );
      },
    ),
  ];
}