inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 앱 개발 기초

레이아웃 질문드립니다.

해결된 질문

337

Namwoong Kim

작성한 질문수 4

1

강의 열심히 재미있게 잘듣고, 준비하던 앱도 잘 만들어가고 있습니다.

다만, 레이아웃이 여전히 쉽지는 않습니다. 간단한거 같으면서도 막상 해보면 뜻데로 되지 않아요.

 

우리 보통 splash 화면은 다음과 같이 생겼잖아요.

스크린샷 2023-06-18 오후 3.53.30.png위의 경우는 레아아웃을 어떻게 짜야 할까요.

이미지와 로고는 중앙 약간 위쪽에 있고,

아래 회사이름은 항상 아래에 박혀 있습니다. 이래저래 시험하고 있는데 잘 안되서

 

선생님께서 틀만 잡아주시면 앞으로도 굉장히 많이 사용할꺼 같습니다.

부탁드리겠습니다!!!! 감사합니다.

flutter

답변 1

1

DevStory

안녕하세요 Namwoong Kim님

문의 주신 Splash 레이아웃 샘플을 👉 DartPad 링크에서 확인하실 수 있습니다.

스크린의 폭과 높이는 기기에 따라 다르기 때문에 위 샘플에선 로고 이미지를 기기 높이의 24% 위치에 배치하도록 구현하였습니다.

image
전체 코드도 함께 올려드립니다.

import 'package:flutter/material.dart';

void main() {
  runApp(
    const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Home(),
    ),
  );
}

class Home extends StatelessWidget {
  const Home({super.key});

  @override
  Widget build(BuildContext context) {
    /// 스크린 크기
    final Size screenSize = MediaQuery.of(context).size;
    return Scaffold(
      body: Container(
        /// Stack이 width를 가득 채우도록 만들기
        width: double.infinity,

        /// 배경 색상
        color: Colors.black,
        child: Stack(
          children: [
            Positioned(
              top: screenSize.height * 0.24, // 기기 크기의 24% 위치에 배치
              left: 0,
              right: 0,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                mainAxisSize: MainAxisSize.min,
                children: [
                  /// Image
                  Container(
                    width: screenSize.width * 0.8,
                    height: screenSize.height * 0.25,
                    alignment: Alignment.center,
                    color: Colors.amber,
                    child: const Text(
                      'img',
                      style: TextStyle(
                        fontSize: 24,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                  ),
                  const SizedBox(height: 16),

                  /// App Name
                  const Text(
                    'app name',
                    style: TextStyle(
                      fontSize: 32,
                      color: Colors.white,
                    ),
                  ),
                ],
              ),
            ),

            /// Company Name
            const Positioned(
              bottom: 16,
              left: 0,
              right: 0,
              child: Center(
                child: Text(
                  "company name",
                  style: TextStyle(
                    fontSize: 16,
                    color: Colors.white,
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

감사합니다 :)

1

Namwoong Kim

정말 고맙습니다~ 선생님.

덕분에 정말 목표를 향해 다가가고 있습니다. 향후 강의도 어서 올려주세요^^

회차마다 있는 실습

1

38

2

user-not-found, wrong-password 코드가 더 이상 반환되지 않습니다

1

70

2

SharedPreferences prefs 초기화 시기 문제

1

84

2

index로 삭제하게 되면, index가 고정되어 있으니 문제가 발생하지 않나요?

1

62

2

API 사이트가 안되네요

1

77

2

잘 되다가 sharedPreferences부터 에러

1

63

2

기존의 프로젝트

1

63

2

I/O라는 창이 윈도우에서는 없어요

1

61

2

수강 기간 연장 부탁드립니다.

1

59

2

설정 질문

1

55

2

수강 기간 연장 신청 요청드립니다.

1

49

2

수강기간 연장 부탁드립니다.

1

54

2

수강기간 연장 부탁드립니다.

1

55

2

수강기간 연장 부탁 드립니다.^^

1

66

3

강의계획 문의

1

63

2

안녕하세요. 강의 연장 문의드립니다..

1

72

2

수강기간 연장 부탁드립니다!

1

78

2

2회차 StatefulWidget 예제 dartpad 코드와 영상에서의 코드가 다릅니다.

2

95

2

dartpad 에러

1

103

2

cmd에 flutter doctor 입력하면 바로 튕겨버립니다...

1

108

2

애뮬레이터 실행시 무한로딩

1

132

2

저는 강사님 처럼 화면이 안뜨는데 머테리얼 버전이 다른걸까요??

1

64

2

수강기간 연장 부탁드립니다!

1

58

2

수강기간 연장 부탁드립니다.

1

68

2