반응형
Flutter에서 리스트를 보여줄 때, 데이터가 변경되면 UI를 자동으로 갱신하고 싶을 때가 있습니다.
이럴 때 GetX 상태관리를 활용하면 간단하고 효율적으로 상태 변화를 UI에 반영할 수 있습니다.
이번 글에서는 GetX와 ListView를 사용하여 동적 리스트를 구현하는 방법을 살펴봅니다.
1. GetX 설치
먼저 pubspec.yaml에 GetX 패키지를 추가합니다.
dependencies: flutter: sdk: flutter get: ^4.6.5
dependencies:
flutter:
sdk: flutter
get: ^4.6.5
그리고 flutter pub get을 실행합니다.
2. Controller 생성
GetX의 핵심은 Controller입니다.
데이터를 관리하고 UI와 연결할 수 있는 클래스입니다.
import 'package:get/get.dart';
class ItemController extends GetxController {
// RxList를 사용하면 리스트 변경 시 UI 자동 업데이트
var items = <String>[].obs;
void addItem(String item) {
items.add(item);
}
void removeItem(int index) {
items.removeAt(index);
}
}
- .obs를 붙이면 **반응형 상태(Rx)**가 됩니다.
- 리스트가 바뀌면 이를 감지하여 UI가 자동으로 갱신됩니다.
3. UI 구현
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'controller/item_controller.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final ItemController controller = Get.put(ItemController());
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('GetX ListView Example')),
body: Column(
children: [
Expanded(
child: Obx(() => ListView.builder(
itemCount: controller.items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(controller.items[index]),
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () => controller.removeItem(index),
),
);
},
)),
),
Padding(
padding: EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: TextField(
controller: TextEditingController(),
onSubmitted: (value) {
if (value.isNotEmpty) {
controller.addItem(value);
}
},
decoration: InputDecoration(
hintText: '아이템 입력 후 엔터',
border: OutlineInputBorder(),
),
),
),
],
),
),
],
),
),
);
}
}
코드 설명
- Get.put(ItemController())로 Controller를 앱 전체에 등록.
- Obx 위젯으로 리스트를 감싸면, items 리스트가 변경될 때 자동으로 갱신.
- 삭제 버튼을 누르면 removeItem 호출, 텍스트 입력 후 엔터를 누르면 addItem 호출.
4. 결과
- 리스트에 아이템을 추가하면 자동으로 화면에 표시.
- 아이템을 삭제하면 즉시 UI에서 사라짐.
- 별도의 setState 호출 필요 없음 → 코드 간결, 성능 효율적.
5. 마무리
GetX를 사용하면 Flutter에서 상태관리가 매우 직관적이고 간단해집니다.
특히 ListView처럼 동적으로 데이터를 추가/삭제하는 UI에서 복잡한 코드 없이도 즉시 반영할 수 있어 개발 효율성이 크게 올라갑니다.
반응형
'Flutter & Dart' 카테고리의 다른 글
| [Flutter] Flutter ScreenUtil로 반응형 UI 쉽게 만들기 (0) | 2025.12.17 |
|---|---|
| [Flutter] GetX 장단점 완벽 정리: 장점과 단점을 한눈에 (1) | 2025.12.01 |
| [Flutter] Getx 와 Hive 같이 사용하는 방법 (0) | 2025.11.20 |
| [Flutter] Flutter에서 Hive 사용법 (0) | 2025.11.20 |
| [Flutter] 플러터 무한 스크롤 구현하기 (0) | 2025.08.26 |