More
Flutter에서 List.generate를 사용하여 데이터 처리하는 방법과 Back4app 활용하기
10 분
소개 flutter에서 동적 목록 생성을 위한 가장 간단한 방법은 list generate 을 사용하는 것입니다 이는 back4app과 같은 백엔드 서비스에서 가져온 데이터를 처리할 때 특히 유용합니다 동적 ui 요소, 여러 데이터 항목 처리 또는 네트워크 요청 최적화와 관련하여 list generate 는 최소한 코드를 간소화하고 성능을 향상시킬 것입니다 이 튜토리얼에서는 flutter에서 list generate 을 사용하여 백엔드 데이터를 효율적으로 처리하는 방법을 살펴보겠습니다 이 예제에서는 back4app을 사용하여 사용자 리뷰를 동적으로 가져오고 표시하는 간단한 flutter 애플리케이션을 만드는 방법을 보여줍니다 이 과정에서 리뷰를 평가하게 됩니다 백엔드 데이터 처리, 네트워크 요청 최적화 및 list generate 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 back4app 계정 https //www back4app com 에서 무료 계정에 가입하세요 로컬 머신에 flutter 개발 환경을 설정하세요 https //flutter dev/docs/get started/install 를 따라 설정하지 않았다면 dart, flutter 위젯 및 비동기 프로그래밍에 대한 기본 지식 1단계 – back4app 백엔드 설정하기 back4app 프로젝트 생성하기 https //dashboard back4app com/ 에 로그인하고 새 프로젝트를 생성하세요 parse 클래스 생성하기 back4app 프로젝트에서 review 라는 이름의 새 parse 클래스를 생성하세요 이 클래스는 다양한 항목(예 제품, 영화 등)에 대한 사용자 리뷰를 저장합니다 다음 필드를 추가하세요 username (string) 리뷰를 제출한 사용자의 이름 rating (number) 사용자가 부여한 평점, 일반적으로 1에서 5 사이의 값 comment (string) 리뷰 텍스트 또는 댓글 샘플 데이터 추가하기 review 클래스를 샘플 데이터로 채워 flutter 앱에서 사용할 수 있도록 하세요 back4app 자격 증명 받기 프로젝트 설정으로 이동하여 flutter 앱을 back4app에 연결하는 데 필요한 application id와 client key를 가져오세요 2단계 – flutter 프로젝트 설정하기 새 flutter 프로젝트 만들기 터미널 또는 명령 프롬프트를 열고 다음을 실행하세요 종속성 추가 pubspec yaml 을 열고 다음 종속성을 추가하세요 앱에서 parse 초기화 lib/main dart , parse sdk를 가져오고 main 함수에서 초기화하세요 import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home reviewscreen(), ); } } 'your back4app app id'와 'your back4app client key' 를 실제 back4app 자격 증명으로 교체하세요 3단계 – list generate을 사용하여 데이터 가져오기 및 표시하기 리뷰 화면 위젯 만들기 lib/main dart , back4app에서 리뷰를 가져와서 list generate 사용하여 표시할 새로운 위젯을 추가합니다 class reviewscreen extends statefulwidget { @override reviewscreenstate createstate() => reviewscreenstate(); } class reviewscreenstate extends state\<reviewscreen> { list\<parseobject>? reviews; @override void initstate() { super initstate(); fetchreviews(); } future\<void> fetchreviews() async { final query = querybuilder\<parseobject>(parseobject('review')); final response = await query query(); if (response success && response results != null) { setstate(() { reviews = response results as list\<parseobject>; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('user reviews')), body reviews == null ? center(child circularprogressindicator()) listview\ builder( itemcount reviews! length, itembuilder (context, index) { final review = reviews!\[index]; return reviewtile( username review\ get\<string>('username') ?? 'anonymous', rating review\ get\<int>('rating') ?? 0, comment review\ get\<string>('comment') ?? '', ); }, ), ); } } class reviewtile extends statelesswidget { final string username; final int rating; final string comment; reviewtile({required this username, required this rating, required this comment}); @override widget build(buildcontext context) { return card( margin edgeinsets symmetric(vertical 10, horizontal 15), child padding( padding const edgeinsets all(15 0), child column( crossaxisalignment crossaxisalignment start, children \[ text( username, style textstyle(fontweight fontweight bold), ), sizedbox(height 5), row( children list generate(5, (index) { return icon( index < rating ? icons star icons star border, color colors amber, ); }), ), sizedbox(height 10), text(comment), ], ), ), ); } } 이 예제에서 reviewtile 은 사용자의 리뷰를 표시하는 사용자 정의 위젯입니다 별 평점은 list generate 를 사용하여 동적으로 생성되며, 백엔드에서 가져온 rating 값을 기반으로 별 아이콘의 행을 만듭니다 4단계 – list generate 및 future wait를 사용한 데이터 가져오기 최적화 여러 백엔드 엔드포인트에서 데이터를 동시에 가져와야 하는 경우, list generate 와 future wait 를 조합하여 프로세스를 최적화할 수 있습니다 여러 관련 레코드 가져오기 'product'라는 이름의 다른 클래스가 있고 여러 제품에 대한 관련 리뷰를 한 번에 가져오고 싶다고 가정해 보세요 list generate 를 사용하여 이러한 요청을 동시에 시작할 수 있습니다 future\<void> fetchmultipleproductsreviews(list\<string> productids) async { list\<future\<list\<parseobject>>> requests = list generate(productids length, (index) { final query = querybuilder\<parseobject>(parseobject('review')) whereequalto('productid', productids\[index]); return query query() then((response) => response results as list\<parseobject>); }); list\<list\<parseobject>> allreviews = await future wait(requests); setstate(() { allproductreviews = allreviews; }); } 이 접근 방식은 모든 제품에 대한 데이터를 동시에 가져와 전체 대기 시간을 줄입니다 5단계 – list generate 를 사용한 배치 작업 수행 백엔드에서 가져온 여러 레코드에 대해 배치 업데이트 또는 삭제를 수행해야 하는 경우, list generate 가 프로세스를 단순화할 수 있습니다 배치 업데이트 예제 여러 레코드의 상태를 한 번에 업데이트하는 방법은 다음과 같습니다 future\<void> updatemultiplereviews(list\<string> reviewids, string newstatus) async { list\<future\<parseobject>> updaterequests = list generate(reviewids length, (index) { parseobject review = parseobject('review') objectid = reviewids\[index]; review\ set('status', newstatus); return review\ save(); }); await future wait(updaterequests); print('all reviews updated'); } 여기서 list generate 을 사용하면 단일 작업에서 많은 수의 레코드에 대해 효율적으로 작업을 수행할 수 있습니다 6단계 – 앱 테스트 및 실행 앱을 flutter run 을 사용하여 실행하세요 사용자 리뷰 목록이 표시되어야 하며, 각 리뷰는 list generate 을 사용하여 동적으로 생성된 별 등급을 보여줍니다 배치 작업 및 다중 가져오기 예제를 구현했다면, 모든 것이 올바르게 작동하는지 확인하기 위해 해당 시나리오도 테스트하세요 결론 이 튜토리얼에서는 list generate 을 사용하여 flutter에서 back4app과 같은 백엔드에서 가져온 데이터를 효율적으로 처리하고 표시하는 방법을 배웠습니다 list generate , 동적 ui 요소를 생성하고, 데이터 가져오기를 최적화하며, 깔끔하고 유지 관리하기 쉬운 방식으로 배치 작업을 수행할 수 있습니다 이 접근 방식은 앱의 성능을 향상시킬 뿐만 아니라 코드베이스를 정리하고 관리하기 쉽게 유지합니다 flutter와 함께 back4app을 사용하는 방법에 대한 자세한 정보는 https //www back4app com/docs/flutter/overview 코딩을 즐기세요!