如何解决颤抖的消费者未返回正确的数据
所以我有一个相对简单的小部件树:
Widget GetUserData(){
return ChangeNotifierProvider(
create: (context) => new UserDog.empty(),child: FutureBuilder<UserDog>(
future: _getUserData,builder: (_,AsyncSnapshot<UserDog> snapshot){
return Consumer<UserDog>(
builder: (_,dog,__){
if (snapshot.hasData){
dog = snapshot.data;
}
return CreateMainContainer();
}
);
},),);
}
Widget CreateMainContainer(){
return Consumer<UserDog>(
builder: (dogContext,__) {
print(dog.imageID); // Is null here but isn't in the Consumer above this widget
return SafeArea(
child: Padding(
padding: EdgeInsets.fromLTRB(
MediaQuery.of(dogContext).size.width * 0.07,MediaQuery.of(dogContext).size.width * 0.07,0),child: Column(
children: <Widget>[
Flexible(flex: 15,child: CreateNameSection()),Flexible(flex: 35,child: UserDogWidget()),Flexible(flex: 25,child: CreateDetailsSection())
]),)
);
}
);
}
future从数据库返回有效数据,并正确填充UserDog
对象,在Consumer
内的GetUserData()
中,dog变量返回正确填充的UserDog
对象。但是由于某种原因,Consumer
中的CreateMainContainer
返回了一个空的UserDog
对象。
我对Flutter相当陌生,所以我可能在做一些愚蠢的事情,但是我不知道为什么会这样。在重构之前,这种方法可以正常工作,但是我无法弄清楚为什么对象没有沿小部件树传播?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。