其他类的颤振中的一个按钮,点击呼叫的setState()类的方法

问题描述 投票:0回答:2

我必须根据所选抽屉项改变支架的身体我的主页抽屉里,现在我需要在一个片段上的按钮,敲击改变形体和调用主类的setState()方法的参数更新屏幕。我怎样才能做到这一点? 这是我的身体支架:

body: _getDrawerItemWidget(_selectedDrawerIndex));

并且当抽屉项目被选择的的setState()是根据该程序代码中调用和体被填充:

_getDrawerItemWidget(int pos) {
    switch (pos) {
      case 0:
        return new MainFragment();
      case 1:
        return new CardMgmt();
.........
}
}

但现在我需要从CardMgmt类的按钮做到这一点。

android callback dart flutter
2个回答
0
投票

你可以用回调函数做到这一点。

在父控件在创建子部件,并通过回调的参数:

...
@override
Widget build(BuildContext context) {
  return LoginPage(onSignedIn: _signedIn);
}

void _signedIn() {
  setState(() {
  });
}

在子控件调用此回调,当你需要它:

...    
class LoginPage extends StatefulWidget {
  LoginPage({this.onSignedIn});
  final VoidCallback onSignedIn;

  State<StatefulWidget> createState() => new _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
...
void callCallbackFunction() {
  widget.onSignedIn();
}
...

希望能帮助到你。祝好运!


0
投票

让我给一个超级简单的方法,我用,每当我想换另一个类/控件的状态:

定义一个全局变量,然后在State类以后要改变控件的使用这个变量。然后你就可以从你的代码,你的第一个类的内部状态的任何方法修改此变量的值将不类的setState()方法的任何直接调用自动改变。

这里有一个例子:

int counter = 0 ;

class _AppState extends State<App> {

var numberOfItems = counter ;

return new MaterialApp(
  title: 'Ads App',
  home: new Text(counter),
 );
}

如果你从你的代码的任何地方改变计数器的值Text控件内容会自动更改。

© www.soinside.com 2019 - 2024. All rights reserved.