반응형
질문
저는 서랍에 다른 항목들을 만들고 싶어서, DrawerItems
를 위한 별도의 파일을 만들고 생성자를 통해 데이터를 메인 파일로 전달하려고 합니다. 그러나 onPressed
함수에서 다음과 같은 오류가 발생합니다:
"The argument type 'Function' can't be assigned to the parameter type 'void Function()'"
class DrawerItem extends StatelessWidget {
final String text;
final Function onPressed;
const DrawerItem({Key key, this.text, this.onPressed}) : super(key: key);
@override
Widget build(BuildContext context) {
return FlatButton(
child: Text(
text,
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 18.0,
),
),
onPressed: onPressed,
);
}
}
누구든지 이유를 알고 있나요?
답변
코드를 변경하여 onPressed
에 대해 Function
대신 VoidCallback
을 수용하도록합니다.
그런데 VoidCallback
은 void Function()
의 약칭일 뿐이므로 final void Function() onPressed;
으로 정의할 수도 있습니다.
업데이트된 코드:
class DrawerItem extends StatelessWidget {
final String text;
final VoidCallback onPressed;
const DrawerItem({Key key, this.text, this.onPressed}) : super(key: key);
@override
Widget build(BuildContext context) {
return FlatButton(
child: Text(
text,
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 18.0,
),
),
onPressed: onPressed,
);
}
}
반응형
댓글