Dev/Flutter
Flutter - listener, callback 구현하기
healthyryu
2021. 11. 19. 11:26
Flutter 에서 Custom callback 함수를 간단하게 구현하는 방법
1. 인터페이스 역할을 해주는 함수를 typedef 로 정의
typedef DateTimeCallback = void Function(DateTime);
2. 원하는 콜백을 만들고 싶은 함수에 DateTimeCallback 이라 선언한 함수를 파라미터로 넣어준다.
class SelectCalendar {
Future showPickerDate(BuildContext context, DateTime initDate, DateTimeCallback callback) async {
await showDatePicker(
....
}).then((value) => {
if (value != null)
{
callback(value)
}
});
)
}
typedef DateTimeCallback = void Function(DateTime);
3. callback 을 받고자 하는 곳에서 위해서 만든 showPickerDate() 함수를 사용해서 선언해서 callback 을 받으면 된다.
SelectCalendar().showPickerDate(
context, _now, (date) {
setState(() {
_now = date;
});
}
);
Flutter 에서 Void callback 함수를 간단하게 구현하는 방법
1. 기존에 존재하는 Void Callback 을 사용하면 간단하게 구현된다.
platform_dispatcher.dart 에 존재하는 기본 typedef 를 사용하면 된다.
typedef VoidCallback = void Function();
2. 코두 구현해서 사용
Widget wTextButton(
Color color, String assetPath, String text, VoidCallback callback) {
return TextButton.icon(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all<Color>(color)),
onPressed: () {
callback.call();
},
icon: Image.asset(
assetPath,
width: 20,
),
label: Text(
text,
style: const TextStyle(color: Colors.white),
));
}
Widget iconTextButton() {
return Container(
child: Row(
children: <Widget>[
wTextButton(색깔, "이미지 경로", "버튼 이름", () {
}),
...
],
),
);
}반응형