Сходства
Обе этих библиотеки работают на Navigator 2.0, что дает нам больший контроль над навигацией в наших приложениях. Также часть функционала в них совпадает.
Количество кода
В auto_route мы пишем намного меньше кода, так как используется кодогенерация. Но некоторые не любят ее, поэтому используют GoRouter. Также auto_route позволяет нам напрямую передавать нужные аргументы прямо в Route, не используя дополнительный код.
Разберем на примере вот такого экрана:
class HomePage extends StatelessWidget {
final String appName;
const HomePage({required this.appName, super.key});
…
}
Для auto_route у нас будет:
AutoRoute(page: HomeRoute.page);
context.router.push(HomeRoute(appName: ‘My App Name’));
А для go_router:
GoRoute(
path: ‘/home’,
builder: (context, state) {
final appName = state.queryParams[‘appName’];
return HomePage(appName: appName);
}
);
GoRouter.of(context).push(‘/home?appName=”My App Name”’);
В следующей части поговорим о количестве багов, вложенной навигации и Route Guards.
А пока на этом всё, пишите в чате, было ли полезно?
