Comments (4)
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.
I have the same problem and I couldn't find the solution. 🤔🤔🤔
from bloc.
I've had the same problem for about 2 weeks and I still haven't resolved it...
from bloc.
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)
- feat: Add `force` to Emitter HOT 7
- feat: Privacy manifest file for iOS is missing HOT 4
- question: BlocObserver and Injectable Singletons HOT 3
- question: [flutter_todos] why don't close StreamController? HOT 1
- docs: Add/Change ko translation for Bloc docs
- docs: What is the best way to use riverpod with bloc for dependency injection? HOT 2
- fix: `BlocConsumer.listener` is not being fired HOT 5
- fix: Bloc Consumer's listener is passing the previous instance of the bloc to the method HOT 2
- fix: Bloc with searchAnchor Widget HOT 3
- fix: emitting a state in a closed Cubit throws an error HOT 5
- Unable to upgrade to 4.0.0 Bloc plugin on Intellij HOT 5
- perf: Example of not duplicating data with repository pattern in todos example HOT 4
- question: I need to access the latest state of bloc outside of a widget tree in a helper function. HOT 5
- Emit that occurs during init doesn't cause a rebuild HOT 1
- How to rely on data from another Stream? HOT 4
- question: is this considered a anti pattern if a repository depends on another bloc. HOT 2
- docs: RTL in documentation
- feat: allow user to choose which event or state change to be captured in the changeStack or not HOT 2
- feat: Translation of menu and prev, next, note title in the document HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bloc.