我有一个MainPage,其中有一个AppBar,一个BottomNavigationBar和多个正文:
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: resourcesBar(),
body: _bodies[_selectedIndex],
bottomNavigationBar: bottomNavigationBar(),
);
}
当然,主体会随着bottomNavigationBar的选定索引而变化。
在我的AppBar中,我有一些双变量。
当用户单击其中一个正文中的按钮时,我想更新这些双精度变量。
主体也是StatefulWidgets
,例如:
class SubView extends StatefulWidget {
SubView({Key key, this.planet, this.upgradeCallback}) : super(key: Key(planet.name));
final Planet planet ;
final Function(Building) upgradeCallback ;
@override
_SubViewState createState() => _SubViewState();
}
这是我在主页上给upgradeCallback
的方式:
List<Widget> _bodies = <Widget>[
SubView(planet: userData.planetsList[0],
upgradeCallback: updateVariables,
),
];
这是我的updateVariables
函数:
static void updateVariables(Building current) {
setState(() {
userData.variable_one += 10;
});
}
但是,我的IDE给我显示了一个错误:Instance members can't be accessed from a static method
。
如果我将函数设置为非静态,则在_bodies列表上有SubView声明:Only static members can be accessed in initializers
。
我希望能够通过单击SubView来动态更新MainPage AppBar变量(使用setState),但我不知道该怎么做。
有什么想法吗?
谢谢。