250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 주엽역 생활맥주
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 목표 및 회고
- 주택가 잠실새내
- 안드로이드 Sunflower 스터디
- 막내의막무가내 플러터
- 막내의 막무가내 알고리즘
- 부스트코스
- 막무가내
- 막내의막무가내 코틀린
- 막내의막무가내 rxjava
- 막내의막무가내 SQL
- 2022년 6월 일상
- 안드로이드 sunflower
- 막내의막무가내 알고리즘
- 부스트코스에이스
- 막내의막무가내 플러터 flutter
- 안드로이드
- 프로그래머스 알고리즘
- flutter network call
- 막내의막무가내 안드로이드 코틀린
- 막내의 막무가내
- 막내의막무가내
- 막내의막무가내 안드로이드
- Fragment
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 일상
- 막내의막무가내 안드로이드 에러 해결
- 막내의막무가내 프로그래밍
- 프래그먼트
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[Flutter] Function 클래스와 예제 본문
728x90
플러터는 객체지향과 함수형 프로그래밍 특징을 모두 가진 언어이다.
https://api.flutter.dev/flutter/dart-core/Function-class.html
그래서 모든 함수의 기본이 되는 타입이 되는 Function 클래스가 있으며 함수형 프로그래밍이기 때문에 함수도 변수에 담을 수가 있다.
이에 대해 몇가지 예제를 직접 테스트를 해보았다.
void main() {
int result = cal(2, 5, multiply);
print(result);
}
int cal(int n1, int n2, Function func) {
return func(n1, n2);
}
int add(int n1, int n2) {
return n1 + n2;
}
int multiply(int n1, int n2) {
return n1 * n2;
}
void main() {
int result = cal(2, 5, add);
print(result);
}
final Function cal = (int n1, int n2, Function func) {
return func(n1, n2);
};
int add(int n1, int n2) {
return n1 + n2;
}
int multiply(int n1, int n2) {
return n1 * n2;
}
Function에 선언된 Function 이름인 add Function을 매개변수로 전달하여 이 매개변수로 해당 함수를 호출할 수 있다.
또한 함수도 Function 변수타입으로 저장할 수가 있다.
다음은 클래스 객체 테스트다.
void main() {
Game game = Game(state: play);
print(game.state);
game.state = stop;
print(game.state);
}
class Game {
Game({this.state});
Function? state;
}
void play() {
print('play ~~~~');
}
void stop() {
print('stop !!!!!');
}
예상대로 흘러감을 볼 수 있다. 예제를 통해 콜백도 이를 통해 구현됨을 알 수 있다.
class ReusableCard extends StatelessWidget {
// @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
ReusableCard({@required this.colour, this.cardChild, this.onPress});
final Color colour;
final Widget cardChild;
final Function onPress;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPress,
child: Container(
child: cardChild,
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
// 생성자로 받은 컬러 사용
color: colour,
borderRadius: BorderRadius.circular(10.0)),
),
);
}
}
body: Column(
children: <Widget>[
Expanded(
child: Row(
children: <Widget>[
Expanded(
child: ReusableCard(
onPress: () {
setState(() {
selectedGender = Gender.male;
});
},
colour: selectedGender == Gender.male
? activeCardColour
: inactiveCardColour,
cardChild: IconContent(
icon: FontAwesomeIcons.mars,
label: 'MALE',
),
)),
ReusableCard 클래스를 만들어 Function을 활용하여 GestureDetector의 onPress 콜백함수를 외부에서 매개변수를 받아서 결과를 리턴해주는 기능을 구현한 예제이다.
이상 플러터의 Function 클래스를 예제를 통해 학습해봤다.
댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!
728x90
'플러터(Flutter) & Dart' 카테고리의 다른 글
Comments