大家都知道回調(diào)方法在父子Widget之間傳值是非常有用的,特別是用于子Widget向父Widget傳值,接下來我們就看下具體做法.
1.先定義一個(gè)子Widget,為了方便我們暫時(shí)用StatelessWidget
class CallBackTestWidget extends StatelessWidget{
CallBackTestWidget({
Key key,
}):super(key:key);
...此處省略多余代碼
}
2.定義一個(gè)回調(diào)函數(shù)類型
typedef clickCallback = void Function(String value);
3.將回調(diào)函數(shù)透出子Widget
CallBackTestWidget({
Key key,
this. onClick,
}):super(key:key);
final clickCallback onClick;
4.子Widget中按鈕的點(diǎn)擊函數(shù)
void onClicked(){
this. onClick('傳的參數(shù)');
}
5.子Widget按鈕點(diǎn)擊調(diào)用函數(shù)
@override
Widget build(BuildContext context) {
// TODO: implement build
return InkWell(
child: Container(
width: 60,
child:Text(
'測試',
style: TextStyle(
fontSize: 16,
color: Color(0xff333333)
),
) ,
),
onTap: onClicked,
);
}
6.父組件中調(diào)用
CallBackTestWidget(
onPressed:(value){
print("子Widget回調(diào)函數(shù)傳值:$value");
}
)
至此子組件透給父組件的回調(diào)函數(shù)已經(jīng)構(gòu)造完成