• Stars
    star
    274
  • Rank 150,274 (Top 3 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A powerful routing abstraction over Flutter Navigator, with nested Navigator and Deeplinks

Nuvigator

CircleCI Pub

Routing and Navigation package.

Não fala bem inglês? Leia o README_PT

What

Nuvigator provides a powerful routing abstraction over Flutter's own Navigators. Model complex navigation flows using a mostly declarative and concise approach, without needing to worry about several tricky behaviors that Nuvigator handles for you.

Nuvigator can help you with:

  • Large/Modular Apps: Where you need to have an unified API to able to register routes and design relationship between them
  • Nested Navigation: When you want to have nested/children Navigator inside your app, creating the concept of self contained flows
    • Handles Navigation thought Nuvigator ins your Widget Tree, not need to know where your route is declared
    • Handles pop behavior when a nested Navigator reaches it's end, is able to transparently forward pop results into underlying caller, provider helpers to deal with nested navigation
    • Handles Hero animation/transition between nested Navigators
    • Handles Android back button correctly on nested Navigators
    • Improve support for nested PageRoutes with NuvigatorPageRoute mixin
  • Using DeepLinks: You want to navigate inside your App using DeepLinks, with support for Path Parameters and Query Parameters
  • A declarative, easy to use API to declare and compose Routes together

API Documentation

Focus on providing a more flexible, easier and dynamic API for declaring Navigation and Routing

Quick Start

The simplest you can get:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Nuvigator App',
      builder: Nuvigator.routes(
        initialRoute: 'home',
        screenType: materialScreenType,
        routes: [
          NuRouteBuilder(path: 'home', builder: (_, __, ___) => HomeScreen()),
          NuRouteBuilder(path: 'second', builder: (_, __, ___) => SecondScreen()),
        ],
      ),
    );
  }
}

A more complete example:

import 'package:nuvigator/next.dart'; // import the next file instead of `nuvigator.dart`
import 'package:flutter/material.dart';

// Define a new NuRoute
class MyRoute extends NuRoute {
  @override
  String get path => 'my-route';

  @override
  ScreenType get screenType => materialScreenType;

  @override
  Widget build(BuildContext context, NuRouteSettings settings) {
    return MyScreen(
      onClick: () => nuvigator.open('next-route'),
    );
  }
}

// Define your NuRouter
class MyRouter extends NuRouter {
  @override
  String get initialRoute => 'my-route';

  @override
  List<NuRoute> get registerRoutes => [
    MyRoute(),
  ];
}

// Render
Widget build(BuildContext context) {
  return Nuvigator(
    router: MyRouter(),
  );
}

License

Apache License 2.0

More Repositories

1

fklearn

fklearn: Functional Machine Learning
Jupyter Notebook
1,463
star
2

workspaces

Live development environment for Clojurescript
Clojure
487
star
3

matcher-combinators

Library for creating matcher combinator to compare nested data structures
Clojure
457
star
4

morse

A graphical, interactive tool for browsing Clojure data
JavaScript
326
star
5

state-flow

Integration testing framework using a state monad in the backend for building and composing flows
Clojure
290
star
6

k8s-api

Kubernetes client, data driven
Clojure
149
star
7

docopt.clj

Clojure implementation of the docopt description language
Clojure
77
star
8

mockfn

A mocking library for Clojure.
Clojure
74
star
9

nodely

Clojure
67
star
10

clj-github

A Clojure library for interacting with the github developer API
Clojure
56
star
11

selvage

Testing at the edges with a world-transition style integration test framework
Clojure
53
star
12

i18next

Dart
44
star
13

vessel

A containerization tool for Clojure applications
Clojure
42
star
14

clj-github-app

A library to implement GitHub Apps in Clojure.
Clojure
41
star
15

node-modules-boilerplate

Demo project for Frontend Meetup scheduled to October 26th
JavaScript
40
star
16

nixpkgs

Nix Packages collection used in Nubank
Nix
32
star
17

clj-owasp

28
star
18

emidje

Test runner, report viewer and formatting tool for Midje within Emacs
Emacs Lisp
26
star
19

ordnungsamt

helping maintain order and consistency across code-bases
Clojure
25
star
20

diversidados-curso-ds

Curso de data science - Diversidados
Jupyter Notebook
22
star
21

umschreiben-clj

Rewrite utilities for refactoring clojure files
Clojure
17
star
22

midje-nrepl

nREPL middleware to interact with Midje
Clojure
13
star
23

clj-github-mock

An emulator of the github api implemented in clojure to test your github app
Clojure
11
star
24

clj-bigpanda

A clojure library for BigPanda Alerts and Deployments
Clojure
11
star
25

mobile-book-club

Ruby
10
star
26

robocode-clojure

Template project for building a Robocode Robot in Clojure
Clojure
10
star
27

new-grad-template

Clojure
9
star
28

hack-her-way

Repositório para o programa de contratamento de mulheres em segurança do N
7
star
29

cljnvim

A Neovim config to develop woth Clojure!
Nix
4
star
30

mobile-pairing-exercises

Base project for Nubank's mobile pairing exercises
Swift
3
star
31

facturama-clojure-sdk

Clojure library for developing with Facturama's REST APIs
Clojure
2
star
32

desafio-cocoaheads

2
star
33

tekton-watcher

Watcher for Tekton APIs
Clojure
2
star
34

juntos-separados

Conversations media
1
star
35

prismatic-graphql

Library to create Prismatic schema from GraphQL queries
Clojure
1
star
36

spec-spi-code

Código referente a especificação de SPI
Java
1
star