
완성된 앱부터 보여드리겠습니다.
위 부터 Appbar, header, count_info, button, tabBar, tabBarView 로 이루어져 있습니다.
각 항목을 컴포넌트로 분리하여 작업을 했습니다.
1. 프로젝트 셋팅

컴포넌트 분리를 위해 패키지를 만들어 내부에 파일을 생성합니다.
그리고
assets
폴더 생성 후 pubspec.yaml
파일에 설정을 추가 합니다.
2. 파일 기본 설정
2.1 . profile_buttons.dart
import 'package:flutter/material.dart';
class ProfileButtons extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_buildFollowButton(),
_buildMessageButton(),
],
);
}
}
Widget _buildFollowButton(){
return SizedBox();
}
Widget _buildMessageButton(){
return SizedBox();
}
2.2 . profile_count_info.dart
import 'package:flutter/material.dart';
class ProfileCountInfo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_buildInfo("50", "Posts"),
_buildLine(),
_buildInfo("10", "Likes"),
_buildLine(),
_buildInfo("3", "Share"),
],
);
}
}
Widget _buildInfo(String count, String title){
return SizedBox();
}
Widget _buildLine(){
return SizedBox();
}
2.3 . profile_drawer.dart
import 'package:flutter/material.dart';
class ProfileDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 200,
height: double.infinity,
color: Colors.blue,
);
}
}
2.4 . profile_header.dart
import 'package:flutter/material.dart';
class ProfileHeader extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: [
SizedBox(width: 20),
_buildHeaderAvatar(),
SizedBox(width: 20),
_buildHeaderProfile(),
],
);
}
}
Widget _buildHeaderAvatar(){
return SizedBox();
}
Widget _buildHeaderProfile(){
return SizedBox();
}
2.5 . profile_tab.dart
import 'package:flutter/material.dart';
class ProfileTab extends StatefulWidget {
@override
State<ProfileTab> createState() => _ProfileTabState();
}
class _ProfileTabState extends State<ProfileTab> {
@override
Widget build(BuildContext context) {
return Column(
children: [
_buildTabBar(),
_buildTabView(),
],
);
}
}
Widget _buildTabBar(){return SizedBox();}
Widget _buildTabView(){return SizedBox();}
2.6 . main.dart
import 'package:flutter/material.dart';
import 'package:profileapp/components/profile_buttons.dart';
import 'package:profileapp/components/profile_count_info.dart';
import 'package:profileapp/components/profile_drawer.dart';
import 'package:profileapp/components/profile_header.dart';
import 'package:profileapp/components/profile_tab.dart';
import 'package:profileapp/theme.dart';
void main() {
@override
Widget build(BuildContext context) {
return Scaffold(
endDrawer: ProfileDrawer(),// ProfileDrawer()
// AppBar()
body: Column(
children: [
// header()
const SizedBox(height: 20),
ProfileHeader(),
// countInfo()
const SizedBox(height: 20),
ProfileCountInfo(),
// Buttons()
ProfileButtons(),
const SizedBox(height: 20),
// Tab()
Expanded(child: ProfileTab()),
],
),
);
}
}
AppBar _buildProfileAppBar(){
return AppBar();
}
3. 헤더 작성
헤더와, 앱바를 만들어 보겠습니다.
완성 화면은 이렇습니다.

3.1 앱바
main 파일의 메서드인
_buildProfileAppBar
를 수정할 것입니다.AppBar _buildProfileAppBar(){
return AppBar();
}
AppBar _buildProfileAppBar(){
return AppBar(
leading: Icon(Icons.arrow_back_ios),
title: Text("Prifile"),
centerTitle: true,
);
}
그리고 위젯의 build 에 주석해 놓았던 appBar 부분에 새로 만든 메서드를 추가해 주면 됩니다.

3.2 헤더
profile_header 파일을 수정하겠습니다.

이렇게 나누어 볼 수 있겠죠
@override
Widget build(BuildContext context) {
return Row( //가로로 두는 역할
children: [
SizedBox(width: 20), //사진과 프로필 정보 사이 여백 추가
_buildHeaderAvatar(),
SizedBox(width: 20),
_buildHeaderProfile(),
],
);
}
}
- 프로필 이미지
CircleAvatar
위젯을 활용했습니다. 이미지를 원형으로 만들어 주는 위젯입니다.Widget _buildHeaderAvatar(){
return SizedBox(
width: 100,
height: 100,
child: CircleAvatar(
backgroundImage: AssetImage("assets/avatar.png"),
),
);
}
- 유저 정보
Widget _buildHeaderProfile(){
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"GetinThere",
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.w700,
),
),
Text(
"프로그래머/작가/강사",
style: TextStyle(
fontSize: 20,
),
),
Text(
"데어 프로그래밍",
style: TextStyle(
fontSize: 15,
),
),
],
);
}
[프로필 앱 만들기]
1. 프로젝트 셋팅, 헤더
https://inblog.ai/hj/1-프로필-앱-만들기--30850
2. 프로필 카운드 바 만들기
https://inblog.ai/hj/2-프로필-앱-만들기-30576
Share article