Comments (10)
Sure
from auto_route_library.
first make BottomNavigationBarScreen
stateFull,
create your block inside the BottomNavigationBarScreen.state normally like myBlock = MyBlock()..runSomething();
pass the instance you created to any route
HomeRoute(myBlock: myBlock);
insdie HomeScreen
you need to define a parameter that accepts MyBlock
ofcourse.
lastly provide the bloc instance as a value inside HomeScreen
BlockProvider.value(value: myBlock, child: ....)
from auto_route_library.
I'm also getting another issue with this, whenever I use context.pushRoute(const HomeRoute())
The CategoriesCubit
calling getCategoriesList()
function
from auto_route_library.
@cavin-7span First of all can you wrap AutoRouter inside of the widget instead of extending it?
@override
Widget build(BuildContext context) {
return BlockProvider(
create: ...,
child: AutoRouter(),
);
}
from auto_route_library.
I did the changes as you suggested:
@RoutePage()
class HomeCategoryProviderPage extends StatelessWidget {
const HomeCategoryProviderPage({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => CategoriesCubit(
categoriesRepository: const CategoriesRepository(),
)..getCategoriesList(),
child: const AutoRouter(),
);
}
But still the getCategoriesList()
is calling 2 times. First when it loads the Home Screen, and the second time is when I click on second tab in the Bottom Navigation Bar
from auto_route_library.
@cavin-7span not sure what the issue is, it looks like HomeCategoryProviderPage is losing state for some reason, could you create a simple repo that repreduces the issue?
from auto_route_library.
@Milad-Akarie
Here's the link of the Repository with the reproducible code for the same: https://github.com/Cavin6080/auto-route-issue-with-global-bloc
from auto_route_library.
@Milad-Akarie Here's the link of the Repository with the reproducible code for the same: https://github.com/Cavin6080/auto-route-issue-with-global-bloc
Hey @Milad-Akarie,
Is there any update on it?
from auto_route_library.
Hey @cavin-7span your setup loads two different stacks, it's normal your bloc gets initiated twice.
this is how your graph looks like
- BottomNavigationbarRoute
- HomeCategoryProviderRoute / HomeRoute
- HomeCategoryProviderRoute / ProfileRoute
- ExploreRoute
as you can see HomeCategoryProviderRoute
exists in two different locations in the graph, and it's being created in each location.
the only valid setup for your use case is to have BottomNavigationbarRoute
provide the bloc so it's accessed in all tabs and remove HomeCategoryProviderRoute
edit: you can also create your bloc inside BottomNavigationbaScreen and provide it as a value to the tabs that needs it.
from auto_route_library.
Hey @Milad-Akarie,
Here's my BottomNavigationBar screen's UI:
@RoutePage()
class BottomNavigationBarScreen extends StatelessWidget {
const BottomNavigationBarScreen({super.key});
@override
Widget build(BuildContext context) {
return AutoTabsRouter(
homeIndex: 0,
routes: const [
HomeRoute(),
CategoriesRoute(),
CartRoute(),
AccountRoute(),
],
transitionBuilder: (context, child, animation) => FadeTransition(
opacity: animation,
// the passed child is technically our animated selected-tab page
child: child,
),
builder: (context, child) {
// obtain the scoped TabsRouter controller using context
final tabsRouter = AutoTabsRouter.of(context);
final activeIndex = tabsRouter.activeIndex;
// Here we're building our Scaffold inside of AutoTabsRouter
// to access the tabsRouter controller provided in this context
return Scaffold(
resizeToAvoidBottomInset: true,
body: child,
bottomNavigationBar: AppBottomNavigationBar(
destinations: [
NavigationDestination(
selectedIcon: Icon(
Icons.home,
color: context.color.primary,
),
icon: Icon(Icons.home_outlined, color: context.colorScheme.darkGrey),
label: context.t.home,
),
NavigationDestination(
selectedIcon: Icon(
Icons.category,
color: context.color.primary,
),
icon: Icon(Icons.category_outlined, color: context.colorScheme.darkGrey),
label: context.t.categories,
),
NavigationDestination(
selectedIcon: Icon(
Icons.shopping_cart,
color: context.color.primary,
),
icon: Icon(Icons.shopping_cart_outlined, color: context.colorScheme.darkGrey),
label: context.t.cart,
),
NavigationDestination(
selectedIcon: Icon(
Icons.person,
color: context.color.primary,
),
icon: Icon(Icons.person_outline_rounded, color: context.colorScheme.darkGrey),
label: context.t.account,
),
],
onDestinationSelected: tabsRouter.setActiveIndex,
selectedIndex: activeIndex,
),
);
},
);
}
}
Could you please let me know how can I pass one bloc to only 2 routes?(In my case, to HomeRoute and CategoryRoute)
from auto_route_library.
Related Issues (20)
- Flutter analyze breaks when using context.router.pop HOT 5
- [Web] Redirection cannot be made with the web back button. HOT 3
- Error: Superclass has no getter named 'popDisposition' | The method 'PopScope' isn't defined for the class 'AutoRouteNavigatorState' HOT 5
- [Web] / [Need help] Navigate with URL should build the full stack HOT 2
- When I navigate back I get ERROR! HOT 1
- popForced and popUntilRoot is broken after 7.8.4 HOT 5
- PopScope and WillPopScope doesn't work in Flutter Web when I want to back by browser's back button HOT 1
- commit 45e643a74b13746e77bb12b8cc14f19fe03b95f3 breaks Readme.md formatting
- [Help] Setting default route parameters? Error: RouteArgs can not be null because the corresponding page has a required parameter HOT 1
- Version solving failed on auto_route: ^8.0.0 and auto_route_generator: ^7.3.2 HOT 1
- Navigating back with iOS gesture doesn't go back to the previous page HOT 2
- How to scope a Same and Specific Bloc to some of the Routes using Auto Route? HOT 2
- [support] How to you pass arguments when not on web HOT 13
- AutoTabsRouterTabBarState was disposed with active Ticker HOT 2
- customRouteBuilder's completion result type has broken in the 8.0.3 version HOT 4
- Wildcards explanation is wrong HOT 2
- Allow empty paths without making them initial? HOT 4
- Missing Back Button after refresh on web HOT 9
- Issue with Global Constants as Default Values in Route Generation 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 auto_route_library.