flutter父子组建传值
父组件class Parent extends StatefulWidget {@override_ParentState createState() => _ParentState();}class _ParentState extends State<Parent> {String childData = '传给子组件的值';void onCh...
·
父组件
class Parent extends StatefulWidget {
@override
_ParentState createState() => _ParentState();
}
class _ParentState extends State<Parent> {
String childData = '传给子组件的值';
void onChanged(val) {
setState(() {
childData= val;
});
}
@override
void initState() {
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints viewportConstraints) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: viewportConstraints.maxHeight,
),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Container(
padding: EdgeInsets.all(0.0),
margin: EdgeInsets.all(0.0),
child: new Child(
childData: childData,
callBack: (value) => onChanged(value)),
height: 200.0,
),
Container(
// Another fixed-height child.
color: const Color(0xff008000), // Green
height: 120.0,
)
],
),
),
);
},
);
}
}
子组件
class Child extends StatefulWidget {
// 获取父组件的值
Child({Key key, this.childData, this.callBack}) : super(key: key);
final callBack;
List childData;
@override
_ChildState createState() {
return _ChildState();
}
}
class _ChildState extends State<Child> {
@override
void initState() {
// TODO: implement initState
// childData的值可以在 initState中通过widget.childData拿到。
print(widget.childData);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(Text("子组件"))
);
}
}
更多推荐



所有评论(0)