我必须根据所选抽屉项改变支架的身体我的主页抽屉里,现在我需要在一个片段上的按钮,敲击改变形体和调用主类的setState()方法的参数更新屏幕。我怎样才能做到这一点? 这是我的身体支架:
body: _getDrawerItemWidget(_selectedDrawerIndex));
并且当抽屉项目被选择的的setState()是根据该程序代码中调用和体被填充:
_getDrawerItemWidget(int pos) {
switch (pos) {
case 0:
return new MainFragment();
case 1:
return new CardMgmt();
.........
}
}
但现在我需要从CardMgmt类的按钮做到这一点。
你可以用回调函数做到这一点。
在父控件在创建子部件,并通过回调的参数:
...
@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();
}
...
希望能帮助到你。祝好运!
让我给一个超级简单的方法,我用,每当我想换另一个类/控件的状态:
定义一个全局变量,然后在State
类以后要改变控件的使用这个变量。然后你就可以从你的代码,你的第一个类的内部状态的任何方法修改此变量的值将不类的setState()
方法的任何直接调用自动改变。
这里有一个例子:
int counter = 0 ;
class _AppState extends State<App> {
var numberOfItems = counter ;
return new MaterialApp(
title: 'Ads App',
home: new Text(counter),
);
}
如果你从你的代码的任何地方改变计数器的值Text
控件内容会自动更改。