Fluter stream doesn't listen or detect change
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have problem, i have 3 dart files,
home.dart contain button with onclick:
final cartEmiter = CartEmitter();
cartEmiter.emitCart("add_cart");
cart.dart contain:
class CartEmitter {
StreamController _controller = StreamController.broadcast();
void emitCart(action) {
_controller.add(action);
// print(action);
}
Stream get cartAction => _controller.stream;
}
and in main.dart I have this code to change the cart badge.
StreamSubscription _cartCountSubscribtion;
int _cartCount = 0;
@override
void initState() {
_cartCountSubscribtion = CartEmitter().cartAction.listen((action) {
print(action);
setState(() {
_cartCount++;
});
});
super.initState();
}
@override
void dispose() {
_cartCountSubscribtion.cancel();
super.dispose();
}
But it doesn't work, no error, no output printed.
Is my code wrong or how to listen change ?
dart flutter
add a comment |
I have problem, i have 3 dart files,
home.dart contain button with onclick:
final cartEmiter = CartEmitter();
cartEmiter.emitCart("add_cart");
cart.dart contain:
class CartEmitter {
StreamController _controller = StreamController.broadcast();
void emitCart(action) {
_controller.add(action);
// print(action);
}
Stream get cartAction => _controller.stream;
}
and in main.dart I have this code to change the cart badge.
StreamSubscription _cartCountSubscribtion;
int _cartCount = 0;
@override
void initState() {
_cartCountSubscribtion = CartEmitter().cartAction.listen((action) {
print(action);
setState(() {
_cartCount++;
});
});
super.initState();
}
@override
void dispose() {
_cartCountSubscribtion.cancel();
super.dispose();
}
But it doesn't work, no error, no output printed.
Is my code wrong or how to listen change ?
dart flutter
add a comment |
I have problem, i have 3 dart files,
home.dart contain button with onclick:
final cartEmiter = CartEmitter();
cartEmiter.emitCart("add_cart");
cart.dart contain:
class CartEmitter {
StreamController _controller = StreamController.broadcast();
void emitCart(action) {
_controller.add(action);
// print(action);
}
Stream get cartAction => _controller.stream;
}
and in main.dart I have this code to change the cart badge.
StreamSubscription _cartCountSubscribtion;
int _cartCount = 0;
@override
void initState() {
_cartCountSubscribtion = CartEmitter().cartAction.listen((action) {
print(action);
setState(() {
_cartCount++;
});
});
super.initState();
}
@override
void dispose() {
_cartCountSubscribtion.cancel();
super.dispose();
}
But it doesn't work, no error, no output printed.
Is my code wrong or how to listen change ?
dart flutter
I have problem, i have 3 dart files,
home.dart contain button with onclick:
final cartEmiter = CartEmitter();
cartEmiter.emitCart("add_cart");
cart.dart contain:
class CartEmitter {
StreamController _controller = StreamController.broadcast();
void emitCart(action) {
_controller.add(action);
// print(action);
}
Stream get cartAction => _controller.stream;
}
and in main.dart I have this code to change the cart badge.
StreamSubscription _cartCountSubscribtion;
int _cartCount = 0;
@override
void initState() {
_cartCountSubscribtion = CartEmitter().cartAction.listen((action) {
print(action);
setState(() {
_cartCount++;
});
});
super.initState();
}
@override
void dispose() {
_cartCountSubscribtion.cancel();
super.dispose();
}
But it doesn't work, no error, no output printed.
Is my code wrong or how to listen change ?
class CartEmitter {
StreamController _controller = StreamController.broadcast();
void emitCart(action) {
_controller.add(action);
// print(action);
}
Stream get cartAction => _controller.stream;
}
class CartEmitter {
StreamController _controller = StreamController.broadcast();
void emitCart(action) {
_controller.add(action);
// print(action);
}
Stream get cartAction => _controller.stream;
}
StreamSubscription _cartCountSubscribtion;
int _cartCount = 0;
@override
void initState() {
_cartCountSubscribtion = CartEmitter().cartAction.listen((action) {
print(action);
setState(() {
_cartCount++;
});
});
super.initState();
}
@override
void dispose() {
_cartCountSubscribtion.cancel();
super.dispose();
}
StreamSubscription _cartCountSubscribtion;
int _cartCount = 0;
@override
void initState() {
_cartCountSubscribtion = CartEmitter().cartAction.listen((action) {
print(action);
setState(() {
_cartCount++;
});
});
super.initState();
}
@override
void dispose() {
_cartCountSubscribtion.cancel();
super.dispose();
}
dart flutter
dart flutter
edited Nov 23 '18 at 8:21
Petar
8310
8310
asked Nov 23 '18 at 8:09
RIFALRIFAL
7712
7712
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You create a new CartEmitter
in the initState
function, and another one in the onclick code. Those two are not connected in any way, so the event you emit with the emitCart
call is emitted on a different CartEmitter
than the one you listen to.
You need to share the same CartEmitter
instance between the initState
and onclick
code.
Alternatively, if you know that you will only ever need one CartEmitter
, you can make the _controller
static, so the same controller (and stream) is shared between all instances of CartEmitter
.
In that case, you can make emitCart
and cartAction
static too, and never create any CartEmitter
instance at all.
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53442804%2ffluter-stream-doesnt-listen-or-detect-change%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You create a new CartEmitter
in the initState
function, and another one in the onclick code. Those two are not connected in any way, so the event you emit with the emitCart
call is emitted on a different CartEmitter
than the one you listen to.
You need to share the same CartEmitter
instance between the initState
and onclick
code.
Alternatively, if you know that you will only ever need one CartEmitter
, you can make the _controller
static, so the same controller (and stream) is shared between all instances of CartEmitter
.
In that case, you can make emitCart
and cartAction
static too, and never create any CartEmitter
instance at all.
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
add a comment |
You create a new CartEmitter
in the initState
function, and another one in the onclick code. Those two are not connected in any way, so the event you emit with the emitCart
call is emitted on a different CartEmitter
than the one you listen to.
You need to share the same CartEmitter
instance between the initState
and onclick
code.
Alternatively, if you know that you will only ever need one CartEmitter
, you can make the _controller
static, so the same controller (and stream) is shared between all instances of CartEmitter
.
In that case, you can make emitCart
and cartAction
static too, and never create any CartEmitter
instance at all.
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
add a comment |
You create a new CartEmitter
in the initState
function, and another one in the onclick code. Those two are not connected in any way, so the event you emit with the emitCart
call is emitted on a different CartEmitter
than the one you listen to.
You need to share the same CartEmitter
instance between the initState
and onclick
code.
Alternatively, if you know that you will only ever need one CartEmitter
, you can make the _controller
static, so the same controller (and stream) is shared between all instances of CartEmitter
.
In that case, you can make emitCart
and cartAction
static too, and never create any CartEmitter
instance at all.
You create a new CartEmitter
in the initState
function, and another one in the onclick code. Those two are not connected in any way, so the event you emit with the emitCart
call is emitted on a different CartEmitter
than the one you listen to.
You need to share the same CartEmitter
instance between the initState
and onclick
code.
Alternatively, if you know that you will only ever need one CartEmitter
, you can make the _controller
static, so the same controller (and stream) is shared between all instances of CartEmitter
.
In that case, you can make emitCart
and cartAction
static too, and never create any CartEmitter
instance at all.
answered Nov 23 '18 at 8:27
lrnlrn
11.4k1527
11.4k1527
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
add a comment |
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
so how to use or define same CartEmitter on different file?
– RIFAL
Nov 23 '18 at 8:29
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
oh done, i define final cartemitter on cart.dart thanks for your help
– RIFAL
Nov 23 '18 at 8:32
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53442804%2ffluter-stream-doesnt-listen-or-detect-change%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown