parse_route 2.1.0 copy "parse_route: ^2.1.0" to clipboard
parse_route: ^2.1.0 copied to clipboard

All-encompassing solution for route parsing, matching, and navigation within Dart applications

ParseRoute Library #

Designed with efficiency and comprehensiveness in mind, ParseRoute delivers an all-encompassing solution for route parsing, matching, and navigation within Dart applications. Its intuitive API caters to developers by simplifying complex navigation management tasks, making it a highly flexible and scalable choice for integration into various applications and frameworks. Ideal for projects utilizing Navigator 2, or even in server-side Dart applications, ParseRoute is poised to become a foundational component of GetX and GetServer at some point in the future.

pub package codecov

Key Features #

  • Dynamic Route Matching: Simplifies the matching of routes, including those with dynamic segments, and effortlessly extracts relevant parameters for use.
  • Query Parameter Parsing: Integrates the parsing of URL query parameters directly into the route matching workflow, enhancing data retrieval and usage.
  • Route Registration & Verification: Enables the easy registration of routes within your application and allows for the immediate verification of their registration status.
  • Nested Route Support: Facilitates the organization of complex application navigational structures through the use of nested routes.
  • Advanced Programmatic Navigation: Provides robust tools for programmatically managing navigation, leveraging both route and query parameters for seamless transitions.
  • Comprehensive History Management: Features a powerful history management system that supports back navigation, route replacement, and history clearing functionalities.

Getting Started #

To integrate ParseRoute into your Dart project, simply add it as a dependency in your project's pubspec.yaml file:

dependencies:
  parse_route: ^<latest_version>

Ensure to replace <latest_version> with the latest version number of the library.

Basic Usage #

Setting Up #

Begin by importing ParseRoute into your project file:

import 'package:parse_route/parse_route.dart';

Register Routes #

Register your application's routes as follows:

final parser = ParseRoute();

// Register individual routes with dynamic segments
parser.registerRoute('/user/:id');
// Automatic tracking of nested routes
parser.registerRoute('/profile/followers');
parser.registerRoute('/profile/following');
parser.registerRoute('/profile/edit');
// Wildcard support
parser.registerRoute('/settings/*');
// Query parameter support
parser.registerRoute('/search?foo=bar&baz=qux');
// Dynamic segments can be registered with query parameters
parser.registerRoute('/user/:id?foo=bar');

Route Matching and Navigation #

Match a route and navigate through your application with ease:

final match = parser.matchRoute('/user/123?foo=bar');
if (match != null) {
  // Access matched route and parameters
  print(match.path); // /user/:id
  print(match.parameters); // {id: '123'}
  print(match.urlParameters); // {foo: 'bar'}
}

// Navigate to a route
parser.push('/profile/123');
// Check the current route
print(parser.current.fullPath); // /profile/123

Managing Navigation History #

Efficiently manage your navigation history:

// Navigate through routes
parser.push('/home');
parser.push('/profile/edit');
// Go back to the previous route
parser.pop();
// Verify the current route
print(parser.current.fullPath); // /home

Route Listeners #

parser.addListener('/profile', (newRoute, oldRoute, type) {
  print('Profile route changed: ${newRoute.fullPath}');
});

parser.push('/profile/123'); // Triggers listener

Complex Routes #

parser.registerRouter('/project/:projectId/task/:taskId/detail');

final result = parser.matchRoute('/project/42/task/108/detail?foo=bar');
print(result?.parameters); // {projectId: 42, taskId: 108}
print(result?.urlParameters); // {foo: bar}

API Reference #

ParseRoute #

  • registerRouter(String path): Register a new route
  • matchRoute(String path): Match a given path to a registered route
  • push(String path): Navigate to a new route
  • pop(): Go back to the previous route
  • replaceLast(String path): Replace the current route
  • addListener(String path, RouteListener listener): Add a listener for route changes
  • removeListener(String path): Remove a route listener

MatchResult #

  • path: The matched route path
  • cleanPath: The actual path without query parameters
  • parameters: Map of route parameters
  • urlParameters: Map of URL query parameters

Contribution and Support #

We welcome contributions to the ParseRoute library with open arms! If you're interested in contributing, please submit a pull request with your proposed changes. For any questions, suggestions, or issues, feel free to open an issue on our GitHub repository. Your input helps make ParseRoute better.

11
likes
160
points
200
downloads

Publisher

verified publishergetx.site

Weekly Downloads

All-encompassing solution for route parsing, matching, and navigation within Dart applications

Repository (GitHub)

Documentation

API reference

License

MIT (license)

More

Packages that depend on parse_route