class Astate extends State<A>
{
List b=new List<B>();
@override
Widget build(BuildContext context){
b.add(B());
//how do I access theMethod() for the state object for b[0]?
}
}
class B extends StatefulWidget
{
@override
Bstate createState() => Bstate();
}
class Bstate extends State<B>
{
theMethod()
{
//some content
}
@override
Widget build(BuildContext context) {
}
}
有没有办法使用 b[0] 从相应的状态对象访问 theMethod()? 如果没有,是否有另一种方法可以达到同样的目的?
最佳答案
您可以使用带有 Widget 状态的 GlobalKey 来访问子 Widget 的方法:
class Main extends StatefulWidget {
@override
_MainState createState() => _MainState();
}
class _MainState extends State<Main> {
GlobalKey<_HomeState> _key = GlobalKey();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('StackOverflow'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Home(key: _key),
RaisedButton(
onPressed: () => _key.currentState.changeText('new text'),
child: Text('Change text'),
)
],
)
);
}
}
class Home extends StatefulWidget {
Home({Key key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
String text = 'initial text';
@override
Widget build(BuildContext context) {
return Center(
child: Text(text)
);
}
void changeText(String newText){
setState(() {
text = newText;
});
}
}
关于android - 如何访问有状态小部件列表的状态对象的方法? ( flutter ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59646649/