从嵌套的子视图颤动飞镖通知AppBar

时间:2019-08-12 13:41:37

标签: flutter dart setstate statefulwidget

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

有什么想法吗?

谢谢。

0 个答案:

没有答案