0

我有一个 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),但我不知道该怎么做。

有任何想法吗 ?

提前致谢。

4

0 回答 0