이전 포스팅에서 화면을 만들때는 컬럼을 사용하였다. 그러나 컬럼은 스크롤이 안된다..!
그래서
ListView
를 사용할 것이다.1. 새 프로젝트 만들기

아래에 있는 기본 코드 지우고 여기서 시작합니다.
1.1 클래스 책임 분리
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Placeholder();
}
}
여러 화면을 갖는 경우에는 분리가 되어야 하기 때문에 클래스로 생성이 되어야한다.
MyApp 의
home: HomePage()
에 변경되는 페이지가 오면 된다.1.2 ListView 생성
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: [
for(int i=0; i<20; i++) Text("안녕"),
],
),
);
}
}


아이콘 설정

- 아이콘과 폰트 스타일을 설정한다.
Row(
children: [
Container(
child: Column(
children: [
Icon(
Icons.food_bank,
color: Colors.redAccent,
size: 30,
),
Text(
"ALL",
style: TextStyle(
color: Colors.black87,
fontWeight: FontWeight.bold,
)
),
],
),
),
],
),

- Container > decoration 설정
border 로 테두리 만들기


테두리 스타일 지정



1.3 ❗메서드 만들기


메뉴 마다 아이콘과 이름이 달라야 하기 때문에 컴포넌트화 하여 매개변수만 차이를 둔다.
Row(
children: [
_mIcon(Icons.food_bank, "ALL"),
_mIcon(Icons.emoji_food_beverage, "coffee"),
_mIcon(Icons.fastfood, "Burger"),
_mIcon(Icons.local_pizza, "Pizza"),
],
),

시그니처는 그냥 받고, 받거나 안받거나 하는 애들만 선택적 매개변수로 받는다.
ListView
에 패딩 준다 return Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: ListView(

2 앱 바 만들기
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: Icon(Icons.arrow_back_ios),
title: Text("제목자리"),
actions: [
Icon(Icons.search),
Icon(CupertinoIcons.heart),
],
),


그리고 이런 식으로 스타일 설정한다.
actions: [
Icon(Icons.search),
Icon(CupertinoIcons.heart, color: Colors.redAccent),
SizedBox(width: 16),
],
2.1 앱 바 폰트 설정
pub dev 로 이동

라이브러리 모여있는 오픈소스 모임

기존에 의존성 관리하던건 그래들, 플러터에선 퍼브이다.

복사한 뒤
pubspec.yaml
으로 간다.
기존에 있는
dependencies
에 추가 하거나터미널에
flutter pub add google_fonts
를 치면 자동으로 주입되기도 한다. readme를 참고 해야 사용이 가능하다.

Text _title() {
return Text(
"Recipes",
style: GoogleFonts.patuaOne(
textStyle: TextStyle(fontSize: 30),
),
);
}

의존성 주입한 뒤 폰트 변경을 한다.
여기서 적절한 사용할 폰트 확인이 가능하다.

저 컨테이너 자리에 디자인 만들어서 컴포넌트 뿌리고,

이 컨테이너 내부를 디자인 하여 뿌려주면 된다.
다음 포스팅에서는 마무리를 해 보자!!
스크롤 있는 화면 -1
https://inblog.ai/hj/flutter-스크롤-있는-화면-만들기-1-30547
스크롤 있는 화면 -2
https://inblog.ai/hj/flutter-스크롤-있는-앱-화면-만들기-2-31249
Share article