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(색깔, "이미지 경로", "버튼 이름", () {

          }),
          ...
        ],
      ),
    );
  }
반응형

'Dev > Flutter' 카테고리의 다른 글

Flutter - border 적용  (0) 2021.11.24
Flutter - 함수 파라미터에 기본 인자 설정하기  (0) 2021.11.23
Flutter - ScrollListView  (0) 2021.11.17
Flutter - Syncfusion Calendar 사용  (0) 2021.11.10
Flutter - 앱 종료 하기  (0) 2021.11.09