我的有狀態小部件中有以下構建方法:
@override
Widget build(BuildContext context) {
return Column(children: [
Padding(
child: Container(
child: Row(
children: <Widget>[
_myRadioButton(
title: genders[0],
value: genders[0],
onChanged: (newValue) =>
setState(() => {_groupValue = newValue, context.read<UserSignupForm>().gender = newValue}),
),
_myRadioButton(
title: genders[1],
value: genders[1],
onChanged: (newValue) =>
setState(() => {
_groupValue = newValue, context.read<UserSignupForm>().gender = newValue}),
),
],
),
))
]);
}
這是我的 Radio 行:
Row _myRadioButton({required String title, String? value, required Function onChanged}) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Radio(
value: value,
groupValue: _groupValue,
onChanged: onChanged(),
),
Text(title)
],
);
}
但是,在構建小部件時出現以下運行時錯誤:
The following NoSuchMethodError was thrown building GenderField(dirty, state: _GenderFieldState#17448):
Closure call with mismatched arguments: function '_GenderFieldState.build.<anonymous closure>'
Receiver: Closure: (dynamic) => void
Tried calling: _GenderFieldState.build.<anonymous closure>()
Found: _GenderFieldState.build.<anonymous closure>(dynamic) => void
任何想法如何正確地將onChanged方法引數傳遞給onChanged屬性?
uj5u.com熱心網友回復:
傳遞函式時去掉括號
Row _myRadioButton({required String title, String? value, required void Function(String) onChanged}) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Radio(
value: value,
groupValue: _groupValue,
onChanged: onChanged,
),
Text(title)
],
);
}
uj5u.com熱心網友回復:
這是一個沒有編譯/運行時錯誤的解決方案:
Row _myRadioButton({required String title, String? value,
required Function(dynamic)? onChanged}) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Radio(
value: value,
groupValue: _groupValue,
onChanged: onChanged,
),
Text(title)
],
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334998.html
上一篇:如何解決“引數型別'字串?'無法分配給引數型別'String'"-Flutter
下一篇:更改地圖中的鍵
