[flutter] 플러터 프로바이더를 이용한 동적 UI 생성
이번 포스트에서는 플러터(Flutter)에서 프로바이더(Provider)를 사용하여 동적으로 UI를 생성하는 방법에 대해 알아보겠습니다.
프로바이더(Provider)란?
프로바이더(Provider)는 플러터의 스테이트 매니지먼트(State Management) 라이브러리 중 하나로, 위젯 간의 데이터 공유를 간편하게 만들어주는 라이브러리입니다. 이를 통해 상태 관리를 보다 효율적으로 할 수 있으며, 이를 활용하여 동적 UI를 쉽게 구성할 수 있습니다.
동적 UI 생성하기
가장 먼저, 프로바이더를 사용하기 위해 provider
패키지를 프로젝트에 추가해야 합니다.
dependencies:
provider: ^5.0.0
이제, 다음과 같은 간단한 예제를 통해 프로바이더를 이용하여 동적 UI를 생성하는 방법을 살펴보겠습니다.
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class ItemList extends StatelessWidget {
@override
Widget build(BuildContext context) {
final items = Provider.of<List<String>>(context);
return ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index]),
);
},
);
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ChangeNotifierProvider(
create: (context) => ItemModel(),
child: Scaffold(
appBar: AppBar(
title: Text('Dynamic UI with Provider'),
),
body: ItemList(),
floatingActionButton: FloatingActionButton(
onPressed: () {
Provider.of<ItemModel>(context, listen: false).addItem('New Item');
},
child: Icon(Icons.add),
),
),
),
);
}
}
class ItemModel with ChangeNotifier {
List<String> _items = ['Item 1', 'Item 2'];
List<String> get items => _items;
void addItem(String item) {
_items.add(item);
notifyListeners();
}
}
이 코드는 ItemModel
클래스를 생성하고, 해당 모델의 데이터를 ChangeNotifierProvider
를 통해 위젯 트리에 주입하며, ItemModel
을 통해 아이템을 추가할 때마다 UI가 동적으로 업데이트되도록 구성된 간단한 예제입니다.
결론
프로바이더를 사용하면 플러터 애플리케이션에서 상태를 효율적으로 관리할 수 있으며, 이를 활용하여 동적 UI를 쉽게 구성할 수 있습니다. 프로바이더를 사용함으로써 코드의 가독성을 높이고, 유지보수를 용이하게 할 수 있다는 장점이 있습니다. 동적 UI를 구현해야 하는 경우, 프로바이더를 사용해보시기를 권해드립니다.