Giter Club home page Giter Club logo

Comments (4)

tenhobi avatar tenhobi commented on June 10, 2024 1

This is not an issue with Bloc but with your design.

You have your bloc above MaterialApp, which is great -- all pages can access it.

Imagine routes/pages as "papers" and widgets as "drawings" on that paper. Based on what you described, your pages are Home Page and Second Page. On page Home there might be "drawings" welcome or first. That means when you are on Home Page, you can actually see bloc builder to build something.

But when you navigate to Second Page, again imagine a paper, you cannot see changes on Home Page, but only your current page, no matter if Home Page actually still exists or not. So if you want to create navigation based on states, you need to choose different approach, since your does not do that.

I would recommend i.e. creating states based on auth state like AuthInProgress, LoggedIn and UserNeedsToLogin etc. and then you have two options.

Use BlocListener under provider (you may need Builder above BlocListener to provide current context) and listen to changes there and there you can redirect to different pages (display different "papers"), or you can use something like GoRouter package which I recommend anyway and GoRouter object has redirect callback which you can implement like this maybe, you get the point...

MyStates? lastState;

FutureOr<String?> handleRedirect(
    BuildContext context,
    GoRouterState state,
  ) {
    final appState = context.read<MyBloc>().state;

    // Same route.
    final isSameState = appState == lastState;
    if (isSameState) {
      return null;
    }
    lastState = appState;

    // Auth in progress.
    if (appState is AuthInProgress) return null;

    if (appState is UserNeedsToLogin) {
      return '/login';
    }
    
    return null;

I hope you understand the concepts why your solution couldnt do that thing you wanted. Feel free to ask more questions for sure. :)

from bloc.

Melyca avatar Melyca commented on June 10, 2024

I have the same problem and I couldn't find the solution. 🤔🤔🤔

from bloc.

ubert15 avatar ubert15 commented on June 10, 2024

I've had the same problem for about 2 weeks and I still haven't resolved it...

from bloc.

Bruchess avatar Bruchess commented on June 10, 2024

Thank you very much for your early answer. So, I think that in conclusion is not a good idea to think about screens as if they were states. I'm currently redesigning my app.

from bloc.

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.