Flutter 继承的小部件不';不要更新其他小部件
所以我有一个继承的小部件,它有计数器数据Flutter 继承的小部件不';不要更新其他小部件,flutter,Flutter,所以我有一个继承的小部件,它有计数器数据 class FavProvider extends InheritedWidget { FavProvider({Key key, this.child}) : super(key: key, child: child); final Widget child; int counter =0; // bool fav = true; // var favIcon = Icon(Icons.favorite_border, size
class FavProvider extends InheritedWidget
{
FavProvider({Key key, this.child}) : super(key: key, child: child);
final Widget child;
int counter =0;
// bool fav = true;
// var favIcon = Icon(Icons.favorite_border, size: 20, color: Colors.black,);
static FavProvider of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<FavProvider>();
}
@override
bool updateShouldNotify(FavProvider oldWidget)
{
if(oldWidget.counter != counter)
return true;
return false;
}
}
这里是_反单击方法
_counterClick()
{
setState(()
{
FavProvider.of(context).counter++;
});
}
HeroPage(单击Hero小部件后我们要转换到的页面)也有类似的按钮:
GestureDetector
(
child: Text(ptr.counter.toString(), style: TextStyle(fontSize: 20,), ),
onTap: _counterClick,
),
和类似的方法
_counterClick()
{
setState(()
{
FavProvider.of(context).counter++;
});
}
因此,它们是不同的按钮,但数据相同,ListView有3个ListItem()元素,因此我们得到了3个Hero小部件,每个小部件在主页中都有不同的标记,当单击每个小部件时,会得到带有我们单击的标记的HeroPage()
问题是,当我点击hero小部件时,我可以进入hero页面,点击按钮增加计数器,我可以看到计数器增加,但当我返回主页时,我看不到3小部件上的任何变化,除非我点击增加计数器的按钮(主页中的按钮上的按钮,而不是HeroPage中的按钮)并且更改仅发生在我单击的小部件上,即使我们只有一个计数器与两个页面中的所有按钮关联
_counterClick()
{
setState(()
{
FavProvider.of(context).counter++;
});
}