[英]How to Call a function in parent widget from child widget | Flutter
[英]How to call parent widget function from child widget in Flutter
我有一個父 StatefulWidget 和子 StatefulWidget。 我想從子小部件調用父小部件的 function 即goToPreviousItem
。
父 Class
class Parent extends StatefulWidget {
@override
_ParentState createState() => _ParentState();
}
class _ParentState extends State<Parent> {
String item = 0;
@override
Widget build(BuildContext context) {
return ChildClass();
}
goToPreviousItem(value){
setState(() {item = value});
}
}
兒童 Class
class Child extends StatefulWidget {
@override
_ChildState createState() => _ChildState();
}
class _ChildState extends State<Child> {
@override
Widget build(BuildContext context) {
return Container(
child: FlatButton(
color: Color(0XFFEFEFEF),
textColor: primaryColor,
disabledColor: Colors.grey,
disabledTextColor: Colors.black,
padding: EdgeInsets.symmetric(
vertical: 15.0, horizontal: 10.0),
onPressed: () => goToPreviousItem(2),
child: Text(
"Update",
),
),
);
}
}
我怎樣才能做到這一點?
在您的子小部件中創建一個Function
類型參數。
class Child extends StatefulWidget { Function function; Child({this.function}); @override _ChildState createState() => _ChildState(); } class _ChildState extends State<Child> { @override Widget build(BuildContext context) { return Container( child: FlatButton( color: Color(0XFFEFEFEF), textColor: primaryColor, disabledColor: Colors.grey, disabledTextColor: Colors.black, padding: EdgeInsets.symmetric( vertical: 15.0, horizontal: 10.0), onPressed: () => widget.function(2), child: Text( "Update", ), ), ); } }
將 function goToPreviousItem
作為參數從父窗口小部件傳遞給子窗口小部件。
Child(function: goToPreviousItem);
使用子小部件內的widget.function(2)
訪問您的 function。
typedef parentFunctionCallback = void Function(String value);
class Parent extends StatefulWidget {
@override
_ParentState createState() => _ParentState();
}
class _ParentState extends State<Parent> {
String item = 'data';
@override
Widget build(BuildContext context) {
return ChildClass(goToPreviousItem);
}
goToPreviousItem(String value){
setState(() {item = value;});
}
}
class ChildClass extends StatefulWidget {
const ChildClass(this.parentfunc);
/// ToDo
final parentFunctionCallback parentfunc;
@override
_ChildState createState() => _ChildState();
}
class _ChildState extends State<ChildClass> {
@override
Widget build(BuildContext context) {
return Container(
child: FlatButton(
color: Color(0XFFEFEFEF),
textColor: primaryColor,
disabledColor: Colors.grey,
disabledTextColor: Colors.black,
padding: EdgeInsets.symmetric(
vertical: 15.0, horizontal: 10.0),
onPressed: () => widget.parentfunc('mail'),
child: Text(
"Update",
),
),
);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.