【发布时间】:2021-02-17 00:22:16
【问题描述】:
我想从父有状态小部件调用子小部件的 initState() 方法。
这是我的代码:
class ClassA extends StatefulWidget {
@override
_ClassAState createState() => _ClassAState();
}
class _ClassAState extends State<ClassA> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
children: <Widget>[
ClassB(),
InkWell(
child: Text('Call ClassB initState()'),
onTap: (){
setState(() {});
},
),
],
),
)
,
);
}
}
class ClassB extends StatefulWidget {
@override
_ClassBState createState() => _ClassBState();
}
class _ClassBState extends State<ClassB> {
@override
void initState() {
print('initState in ClassB');
super.initState();
}
@override
Widget build(BuildContext context) {
return Container(
height: 100,
child: Text('Class B'),
);
}
}
在上面我想从 ClassA() 调用 ClassB initState() 方法。但是在点击时,它只调用 B 类的构建方法,但我也想调用 initState()。
【问题讨论】:
-
不,我不能通过引用来解决我的问题。
-
"在上面我想从 ClassA() 调用 ClassB initState() 方法。" 你不应该那样做,想要那样做,或者需要那样做。详细了解 StatefulWidget 模式,并阅读更多代码。
-
我在按钮单击时调用 setState 方法,以便重建 ClassA 和 ClassB。首次调用 ClassA 加载的 ClassB initState。但是使用 setState() 方法重建 ClassA 而不是 inovking ClassB initState()。
标签: flutter dart flutter-layout state bloc