ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. Flutter Widget (Stack관련)
    FLUTTER/Common 2022. 9. 6. 22:47

     

    Scaffold(
          backgroundColor: misoPrimaryColor,
          body: SafeArea(
            child: SizedBox(
              width: double.infinity,
              child: Stack(
                alignment: Alignment.center,
                children: [
                  Positioned(
                    bottom: 0,
                    child: Container(
                      constraints: BoxConstraints(maxWidth: 400),
                      child: Image.network(backgroundImgUrl),
                    ),
                  ),
                  Column(
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      SizedBox(
                        height: MediaQuery.of(context).size.height * 0.1,
                      ),
                      RichText(
                        textAlign: TextAlign.center,
                        text: TextSpan(
                          style: TextStyle(
                            fontSize: 28,
                            height: 1.5,
                            color: Colors.white,
                          ),
                          children: [
                            TextSpan(text: "친구 추천할 때마다\n"),
                            TextSpan(
                                text: "10000원",
                                style: TextStyle(fontWeight: FontWeight.bold)),
                            TextSpan(
                              text: "할인 쿠폰 지급!",
                            ),
                          ],
                        ),
                      ),
                      SizedBox(
                        height: 30,
                      ),
                      GestureDetector(
                        onTap: () {
                          print('자세히보기');
                        },
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: [
                            Text(
                              '자세히 보기',
                              style: TextStyle(color: Colors.white),
                            ),
                            Icon(
                              Icons.chevron_right,
                              color: Colors.white,
                            )
                          ],
                        ),
                      )
                    ],
                  ),
                  Positioned(
                    bottom: 30,
                    child: GestureDetector(
                      child: Container(
                        padding: EdgeInsets.symmetric(horizontal: 24, vertical: 16),
                        decoration: BoxDecoration(
                            color: Colors.white,
                            borderRadius: BorderRadius.circular(50)),
                        child: Row(children: [Icon(Icons.redeem), Text("친구 추천하기")]),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),
        );

    위 소스코드는 인프런 DevStory님의 플러터앱개발완성강의의 과제코드 중 일부입니다. 

    Stack Widget : 위젯들을 겹칠때 사용한다.
    children 상에서 뒤에 위치하는 위젯들이 위로 나오게된다. 따라서 페이지의 배경을 생성하거나 화면상 동 떨어진 위젯을 만들때 사용하는 것을 확인하였다.

    Positioned : Stack Widget과 사용하며 속성으로 bottom을 설정 밑에서 bottom의 숫자값만큼 위에 생성, right를 설정하면 우측 right값 만큼 띄어준 상태로 생성된다.

    Positoned.Fill과 같은 방식으로도 사용할수 있는데 Stack을 가득 채우는 방식으로 생성된다.

    'FLUTTER > Common' 카테고리의 다른 글

    showDialog 메세지창 띄우기  (0) 2022.09.11
    상태 관리 Provider  (1) 2022.09.11
    CustomScrollView  (0) 2022.09.09
    2. Stateless Stateful  (0) 2022.09.03
    1. 설치  (1) 2022.08.31
Designed by Tistory.