我有一个 MainPage,它有一个 AppBar、一个 BottomNavigationBar 和多个主体:
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: resourcesBar(),
body: _bodies[_selectedIndex],
bottomNavigationBar: bottomNavigationBar(),
);
}
当然,body 会随着 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
在 MainPage 中给出的方式:
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),但我不知道该怎么做。
有任何想法吗 ?
提前致谢。