Giter VIP home page Giter VIP logo

Comments (4)

coleweinman avatar coleweinman commented on June 21, 2024 1

I'm using Bloc in my project and was trying to find a way to access some blocs to provide to the page. I missed how you could just use the context from the RoutemasterDelegate, so I think I can just use that for my use case. As for the API design, it seems like builders always have at least a BuildContext parameter so I feel like it should have it. But on the other hand, it does seem messy to have it passed on every field of Guard.

from routemaster.

tomgilder avatar tomgilder commented on June 21, 2024

Good point, it does feel a bit weird that it's passed into validate but not builder.

There's a balance here; I'm keen to make the methods in the route map have as few parameters as possible, to aid readability and reduce confusion.

The only context that can be provided is the context from the Router, so it won't be different per route build - and you could already get it currently too.

RoutemasterDelegate(
  routesBuilder: (BuildContext context) { // This context here...
    return RouteMap(
      routes: {
        '/': (info) => Redirect('/two'),
        '/two': (info) => Guard(
              validate: (info, context) => true, // ...is the same as this one here...
              builder: () => MaterialPage<void>(child: MyPage()), // ...should it be passed here too?
            ),
      },
    );
  },
)

I'm thinking it should either be provided to both, or neither.

Is there a particular use case you were thinking of here?

from routemaster.

tomgilder avatar tomgilder commented on June 21, 2024

Having thought about this, I'm going to no longer recommend Guard as the best way to protect routes, see this comment.

I might have to change the routing map to provide a context to every route, but only if that context will ever change (such as injecting new dependencies) - otherwise there's no point in passing it as you can easily get it from routesBuilder.

from routemaster.

tomgilder avatar tomgilder commented on June 21, 2024

I'm closing this for now as you can get a context as shown above.

from routemaster.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.