[Flutter] 스나이퍼팩토리 Flutter 기초과정 (11)

GONG·2023년 4월 5일
0
post-thumbnail

11일차 과제 링크 👉 11일차 과제

For

  • 반복문
    for(시작점;종료점;증감값) {
    	// 반복할 코드
    }
  • 종료점은 bool 타입으로
    for(var i=1; i<=10; i++) {
    	// i를 기준으로 1~10까지 반복
    	print(i); // 1~10 출력
    }
  • % : 나머지 구하는 연산자

List와 함께 사용

  • for문과 List는 함께 많이 쓰인다
    List myFriends = ['홍길동', '김길동', '이길동', '박길동', '최길동'];
    for (var i=0; i<myFriends.length; i++) {
      print(myFriends[i]);
    }
  • for - in
    for (var friend in myFriends) {
      print(friend);
    }
    → List를 for문 안에 in 키워드와 함께 줄 경우, 변수에 하나씩 꺼내서 반복문 돌게함
  • forEach
    for (var friend in myFriends) {
      print(friend);
    }

List의 멤버함수

.forEach()

  • 변수안의 요소들을 전부 반복문 돌리고 싶을 때
    for (var friend in myFriends) {
      print(friend);
    }

.map()

  • 변수안의 요소들을 전부 원하는 형태로 바꾸고 싶을 때
  • 결과값은 Iterable
  • Iterable을 List로 다시 바꿔준다. (.toList() 활용)
    myFriends.map((e) {
      return Text(e);
    }).toList();
    ['홍길동', '김길동', '이길동', '박길동', '최길동']
    [Text('홍길동'), Text('김길동'), Text('이길동'), Text('박길동'), Text('최길동')]
  • 카테고리들
    var categories = ['식품', '생활', '디지털', '뷰티', '패션', '자동차', '할인'];
    • categories의 데이터 타입은 List임
    • Row의 속성 children에게 줘야 할 타입은 List → 이럴 때는 map을 사용해서 변수 안의 모든 요소의 데이터 타입을 바꾸자
      ListView(
        scrollDirection: Axis.horizontal,
        children: categories.map((e) {
          return Padding(
            padding: const EdgeInsets.all(8.0),
            child: Chip(label: Text(e)),
          );
        }).toList(),
      ),

.where()

  • 필터를 걸어서 조건에 해당하는 요소만 남기고 싶을 때
    myFriends.where((e) {
    	return e.length == 5;   // 조건은 boolean
    })
  • 조건을 걸고 조건에 해당하는 요소만 꺼냄
  • 얘도 Iterable이 리턴됨
  • 10개월간의 수학점수 중 80점 아래일 때만
    var mathScore = [96, 92, 94, 95, 73, 98, 78, 82, 96, 48];
    Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text('10개월간의 수학 점수'),
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: mathScore.where((e) {
                  return e > 80;
                }).map((e) {
                  return Container(
                    width: e*2,
                    height: 24,
                    margin: const EdgeInsets.only(bottom: 8),
                    decoration: BoxDecoration(
                      gradient: LinearGradient(
                        colors: [
                          Colors.greenAccent,
                          Colors.white
    										]
                      )
                    ),
                  );
                }).toList(),
              ),
            ],
          ),
        ),
      ),
    ),

화살표 함수

Block body Function

  • 중괄호와 return이 있는 방식
    void main() {
    	return runApp(MyApp());
    }

Arrow Function (Expression Body Function)

  • 블록함수의 축약형
    void main() => runApp(MyApp());

ListView.builder

  • 스크롤이 되는 영역(실제로 사용자가 눈으로 보는 영역)에 출력될 때만 위젯을 생성함.
  • itemBuilder라는 필수 속성값을 통해 위젯을 생성
  • itemBuilder에는 return으로 위젯을 반환해주면 됨
  • itemCount : 몇번 돌릴건지
    List myFriends = ['홍길동', '김길동', '이길동', '박길동', '최길동'];
    ListView.builder(
      itemCount: myFriends.length,
      itemBuilder: (context, index) {
        return Text(myFriends[index]);
      }
    ),

11일차 끝

ㅎㅎ..ㅎㅎ....ㅎㅎ...........ㅎㅎ..ㅎㅎ....

profile
우와재밋다

0개의 댓글