dart - When my future completes, how do I notify the observed variable? -
my template (item_view.html) references variable (map item) that's getter it's defined in viewmodel.
in item_view.html, things like:
<h1>{{item['subject']}}</h1> in item_view.dart, item is:
@observable map item => toobservable(viewmodel.itemviewmodel.item); note it's referencing observed map item in itemviewmodel below.
the mainviewmodel has getter itemviewmodel:
@observable itemviewmodel itemviewmodel { // code determine item model return. // ... return itemviewmodels[id]; } and finally, itemviewmodel gets item, , should populating item results.
class itemviewmodel extends observable { final app app; @observable map item = toobservable({}); itemviewmodel(this.app) { getitem(); } void getitem() { ... // todo: completes later, , item changes aren't being observed! f.child('/items/' + decodeditem).onvalue.first.then((e) { item['subject'] = // ...and on. ... the problem seems because listener completes in future, it's not updating @observable map item , not reflecting in template.
am missing toobservable() somewhere? need use notifychange() (i'm not sure when use , can't find examples)?
this line doesn't make sense
@observable map item => toobservable(viewmodel.itemviewmodel.item); item observablebecause made observable line
@observable map item = toobservable({}); when assign map item have ensure make observable before assigning or make item final, exception when try reassign else. can add/remove items can sure item stays observable map.
@observable final map item = toobservable({}); update
@computedproperty('viewmodel.itemviewmodel.item') @observable map item => toobservable(viewmodel.itemviewmodel.item);
Comments
Post a Comment