Изучение

Destination и Route Definition

Типизированное намерение навигации отдельно от создания Flutter Page и сериализации URI.

v0.1.0-dev.2Начальный уровень

Destination и Route Definition

NavigationDestination<R> представляет типизированный запрос. Параметр R задаёт значение, которое может вернуться после извлечения Entry из стека.

dart
final class ProductDestination extends NavigationDestination<bool> {
  const ProductDestination({required this.productId});
  final String productId;
}

NavigationRouteDefinition<D, R> связывает запрос с постоянным идентификатором роута, построением страницы и опциональным URI-кодеком.

dart
NavigationRouteDefinition<ProductDestination, bool>(
  id: const NavigationRouteId('product'),
  pageBuilder: (context, destination, entry) => ProductPage(
    productId: destination.productId,
  ),
  uriCodec: CallbackNavigationUriCodec<ProductDestination>(
    pattern: '/products/:productId',
    encoder: (value) => Uri(path: '/products/${value.productId}'),
    decoder: (match) => ProductDestination(
      productId: match.path('productId'),
    ),
  ),
)

Прикладной код создаёт ProductDestination, а не Map параметров. Только кодек преобразует типизированные значения в путь, строку запроса или фрагмент URI. NavigationRouteId, NavigationMountId, NavigationScopeId и создаваемый во время выполнения NavigationEntryId описывают разные сущности — это исключает коллизии ключей и неоднозначность стека.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.