Flutter 앱 개발 기초

flutter 앱 개발 기초 로그인 페이지 만들기

미미_밍 2023. 7. 22. 23:18

 

코딩은 main.dart 에서 시작합니다. 

 

이중 home 이 위젯을 보여주는 공간입니다. 

보시면 scaffold 위젯이 사용되고 있습니다. 

앱에서 화면을 시작할때는 scaffold 위젯으로 시작합니다. 

여기서 scaffold는 여러 위젯들의 틀을 잡아주는 역할을 합니다. 

 

Scaffold(
	appBar: 다른 위젯, // 상단 바
	body: 다른 위젯, //화면 중앙에 가장 큰 면적
	bottomNavigationBar: 다른 위젯, //하단 바
	floatingActionButton: 다른 위젯, //우측 하단
),

로그인 페이지를 만들기 위해 

body 부분에 textfield()위젯을 사용합니다.

 

+바디를 누르고 전구표시 column 으로 묶기를 사용해 

바디 전체를 한번 묶어 줍니다. 

 

Column(
  children: [ // 자식 위젯들
    Text("위젯1"),
    Text("위젯2"),
  ],
),

세로방향으로 위젯들을 나열할 때 사용됩니다. 

그러면 이렇게 입력할 수 있는 선만 생깁니다. 

decoration: inputdecoration 과 

labeltext 로 이름값을 설정해 줍니다. 

 

복사해서 비밀번호 란도 만들어 줍니다. 

위의 hello flutter 은 

마지막에 home 란을 구성할때 만져줍시다. 

여러분의 완성화면은 hello flutter를 제외한 저 화면이 

나오시면 됩니다.

 

저렇게 만들어 주시면 비밀번호를 쳣을때 비밀번호가 *** 로 뜨지 않고

그대로 뜨게 되는데요 , ***로 표시하고 싶을때는

obscureText: true 속성을 textfielde에 주시면 됩니다. 

 

// 위로 올라와 있는 듯한 버튼
ElevatedButton(
  onPressed: () {},
  child: Text('Elevated Button'),
),

// 텍스트 버튼
TextButton(
  onPressed: () {},
  child: Text('Text Button'),
),

// 아이콘 버튼
IconButton(
  onPressed: () {},
  icon: Icon(Icons.add),
),

버튼 구성입니다.

이 중 위로 올라와 있는 버튼을 사용하여 

로그인 버튼을 만들어 봅시다. 

 

ElevatedButton(

onpressed: () {},

child:Text("로그인")

)

 

버튼이 생성됩니다. 

 

이제 appbar에 hello flutter 를 만들어 봅시다.

title: 을 만들어주고 

Text(

"hello flutter",

style: Textstyle(fontsize:28),

로 맞춰주면 title 로 appbar에 들어간 모습을

보실 수 있습니다. 

 

여기에 중앙 정렬을 위해 

appbar() 안에다

centerTitle: true

입력 해 줍니다. 

body 아래 위젯들의 관계도 입니다. 

이때까지 만들어놓은 코드들의 관계도 라 보시면 되겠습니다. 

 

바디 전체에 padding 을 좀 주기위해 

column 에다 padding 값을 주겠습니다.

 

column 위젯을 선택한 뒤 전구표시 클릭

padding 으로 묶어줍니다. 

추가해 주면 

padding: 속성이 자동으로 추가됩니다. 

이때 padding 값을 얼마나 줄 지는 

전방위 동일 적용: EdgeInsets.all(8)
특정 방위만 적용:EdgeInsets.only(
  left: 8,
  right: 8,
)

위아래, 좌우 적용:EdgeInsets.symmetric(
vertical: 8,
horizontal: 8,
)

edgelnsets 를 통해 지정해 줍니다. 

저희는 요롷게 16으로 지정해 주겠습니다.

 

마지막으로 이메일 입력 란에 이미지를 추가해 봅시다.

요렇게 

Image.network("https://i.ibb.co/CwzHq4z/trans-logo-512.png"),

준비된 이미지를 추가해 줍니다. 

물론 body 영역에 추가 해 주셔야 합니다. 

 

*아직 크기지정이 되지 않았음으로 너무 커서 화면에 오류가 날겁니다. 

이때 스크롤이 가능하게 만들어 주셔야 합니다. 

 

body 전체를 감싸고 있는 padding 을 전구를 눌러 

임의의 위젯 wrap with widget 으로 감싸줍니다. 

 

그럼 widget으로 body 전체가 감싸지게 되는데 

이 위젯 이름을 

singlechildscrollview 로 변경후 저장해 주시면 됩니다. 

*이미지 크기는 image.network 아래 with: 로 변경 가능합니다. 

*이미지 또한 padding 으로 감싸서 다른 위젯과 간격을 줍니다. 

 

 

로그인 페이지 만들기 끝 ! 

 

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          title: Text(
            "Hello Flutter",
            style: TextStyle(fontSize: 28),
          ),
        ),
        body: SingleChildScrollView(
          child: Padding(
            padding: const EdgeInsets.all(16),
            child: Column(
              children: [
                Padding(
                  padding: const EdgeInsets.all(32),
                  child: Image.network(
                    "https://i.ibb.co/CwzHq4z/trans-logo-512.png",
                    width: 81,
                  ),
                ),
                TextField(
                  decoration: InputDecoration(
                    labelText: "이메일",
                  ),
                ),
                TextField(
                  obscureText: true,
                  decoration: InputDecoration(
                    labelText: "비밀번호",
                  ),
                ),
                Container(
                  width: double.infinity,
                  margin: EdgeInsets.only(top: 24),
                  child: ElevatedButton(
                    onPressed: () {},
                    child: Text("로그인"),
                  ),
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

완성 코드입니다 :)

'Flutter 앱 개발 기초' 카테고리의 다른 글

food-recipe 실습  (0) 2024.02.15
flutter 앱 기초 dart 문법 2  (1) 2023.08.30
flutter 앱 개발 기초 dart 문법  (2) 2023.07.25
flutter 앱 개발 기초 1회차  (0) 2023.07.15