대머리개발자

Flutter - 컴포넌트(2) 본문

개발이야기/플러터

Flutter - 컴포넌트(2)

대머리개발자 2023. 6. 7. 14:18
728x90

작업을 하면 할 수록 리액트에서 고민했던 부분들과 오버랩이 많이 된다.

 

또 느끼는거지만 다르지 않다.

 

앞서 로또번호 하나를 만들기 위해서  WinNumber 객체에 일일이 인자값으로 넣어서 번호 스타일을 만들었다.

 

  Row(
                                    children: [
    WinNumber(context.watch<LottoProvider>().lottoNumber),
    // WinNumber(context.watch<LottoProvider>().lottoNumber[1]),
    // WinNumber(context.watch<LottoProvider>().lottoNumber[2]),
    // WinNumber(context.watch<LottoProvider>().lottoNumber[3]),
    // WinNumber(context.watch<LottoProvider>().lottoNumber[4]),
    // WinNumber(context.watch<LottoProvider>().lottoNumber[5])
   ],
  ),

 

해당 부분을 배열 전체로 받아서 처리하도록 변경

 

1. 숫자의 layOut을 하나의 컨테이너로 만들고 배열로 add 한다.

2. 전체 프레임에 숫자 배열을 child에 밀어 넣는다.

 

class WinNumber extends StatelessWidget{
...

// 추천 번호들 나래비!
  SizedBox _getLottoNumber() {
    List<Container> numbers = [];
    for(var i = 0; i < lottoNumber.length; i ++){
      var number = lottoNumber[i];
      var numberTxt = number.toString();
      if(number < 9) {
        numberTxt = "0$numberTxt";      // 일의 자리는 0을 붙여 준다.
      }
      numbers.add(layOutNumber(number, numberTxt));
    }

    return SizedBox(
        child: Row(children: numbers)
    );
  }

  // 번호 하나의 템플릿
  Container layOutNumber(int number, String numberTxt){
    return Container(
        margin: const EdgeInsets.all(10.0),
        padding: const EdgeInsets.all(10.0),
        decoration: BoxDecoration(
          color: _getNumberColor(number),
          borderRadius: BorderRadius.circular(360),
          border: Border.all(color: Colors.black12, width: 1),
        ),
        child: Text(numberTxt, style: TextStyle(fontWeight:FontWeight.w700), textAlign:TextAlign.center)
    );
  }

  @override
  Widget build(BuildContext context) {
    return _getLottoNumber();
  }

}

 

결국 리액트에서 화면 단위의 템플릿을 만들어 넣고 불러다 쓰는 것과 다르지 않다.

 

menuBox 만들어 넣고 스슥사삭

 

 

## 작업시 제일 어려운 부분은 변수 및 파일명에 대한 네이밍이다....아찔하다.

영어공부... 아닌 국어공부좀... 아니 독서좀 많이 할 걸......ㅠㅠ

728x90

'개발이야기 > 플러터' 카테고리의 다른 글

flutter 로또 어플 마무의리..(?)  (0) 2023.06.27
Flutter 상태관리  (1) 2023.06.08
Flutter - 컴포넌트  (0) 2023.05.31
Flutter - Error: Not a constant expression.  (0) 2023.05.30
Flutter - 화면구성  (1) 2023.05.26