반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스프링 공부
- K8S
- nestjs
- 스프링부트공부
- Kafka
- querydsl
- nestjs스터디
- 자바공부
- JPA스터디
- 플러터 공부
- 스프링부트
- 기술면접공부
- 코테준비
- JPA 공부
- 기술공부
- JPA예제
- 플러터 개발
- 스프링공부
- 자료구조공부
- 카프카
- 알고리즘공부
- Flutter
- 스프링
- DDD
- JPA
- 코테공부
- JPA공부
- Axon framework
- 프로그래머스
- nestjs공부
Archives
- Today
- Total
DevBoi
[Flutter] BoilerTemplate 리스트 뷰 개념 본문
반응형
많이 쓰는 조합이다.
서버를 호출해서 데이터를 가져온다.
가져와서 리스트뷰로 아이템 세팅해서 뿌려준다.
대부분 이미지 + 텍스트 의 데이터를 기반으로 세팅하기에 해당 조건으로 템플릿을 생성한다.
우선 디렉토리를 위의 구조로 간다.
data를 받아오는 곳은 해당 폴더에서 처리를 한다.
우선 해당 파일에서 리스트를 return 한다.
List posts = List.generate(
13,
(index) => {
"name": names[random.nextInt(10)],
"dp": "assets/images/cm${random.nextInt(10)}.jpeg",
"time": "${random.nextInt(50)} min ago",
"img": "assets/images/cm${random.nextInt(10)}.jpeg"
});
import 'package:flutter/material.dart';
class PostItem extends StatefulWidget {
final String dp;
final String name;
final String time;
//final String img;
PostItem({
super.key,
required this.dp,
required this.name,
required this.time,
//required this.img,
});
@override
_PostItemState createState() => _PostItemState();
}
class _PostItemState extends State<PostItem> {
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 5),
child: InkWell(
child: Column(
children: <Widget>[
ListTile(
leading: CircleAvatar(
backgroundImage: AssetImage(
"${widget.dp}",
),
),
contentPadding: EdgeInsets.all(0),
title: Text(
"${widget.name}",
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
trailing: Text(
"${widget.time}",
style: TextStyle(
fontWeight: FontWeight.w300,
fontSize: 11,
),
),
),
// Image.asset(
// "${widget.img}",
// height: 170,
// width: MediaQuery.of(context).size.width,
// fit: BoxFit.cover,
// ),
],
),
onTap: () {},
),
);
}
}
그 다음에 post 에 대한 아이템을 세팅하는 부분은 위와 같다.
PostItem에 대한 생성자로 파라미터를 받는다.
그리고, 해당 StatfulWidget에서는 State로, ListTile을 리턴해준다.
그리고 ListViewBuilder는 아래와 같다.
body: ListView.builder(
padding: EdgeInsets.symmetric(horizontal: 20),
itemCount: posts.length,
itemBuilder: (BuildContext context, int index) {
Map post = posts[index];
return PostItem(
//img: post['img'],
name: post['name'],
dp: post['dp'],
time: post['time'],
);
},
),
아까 PostItem을 리턴하게 되면, 해당 ListTile dnㅣ젯들이 리턴되게 되고, 이는 itemBuilder의 값에 들어가게 된다.
일단 기본적인 소스 골격은 짰고, assets 기반이 아닌, S3 모듈을 살펴보자
반응형
'[Mobile] > [Flutter]' 카테고리의 다른 글
[Flutter] 친구 레이아웃 끝내기 (1) | 2023.08.19 |
---|---|
[Flutter] S3이미지 + 데이터 Listview 세팅 (백엔드 서버 통신) (0) | 2023.08.12 |
[Flutter] Splash Screen 에서 로그인 정보 기반 핸들링(자동로그인) (0) | 2023.08.12 |
[Flutter] 플러터 다트 버전 업 및 다트 버전 관리 (0) | 2023.08.11 |
[Flutter] BoilerTemplate 로그인 정보 로컬디비 저장 (0) | 2023.08.10 |