[flutter] 플러터 프로바이더를 사용하여 댓글 작성하기
플러터 앱에서 상태 관리를 할 때 Provider
패키지를 사용하는 것이 매우 일반적입니다.
이번에는 Provider
를 사용하여 댓글을 작성하고 표시하는 방법에 대해 알아보겠습니다.
1. Provider
패키지 추가
먼저, pubspec.yaml
파일에 provider
패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
provider: ^5.0.0
이후 패키지를 다운로드하고 설치하기 위해 터미널에서 다음 명령어를 실행합니다.
flutter pub get
2. Comment
모델 생성
다음으로, 댓글을 나타내는 모델을 생성합니다.
class Comment {
final String text;
final String author;
Comment({required this.text, required this.author});
}
3. ChangeNotifier
클래스 생성
이제, ChangeNotifier
클래스를 사용하여 댓글 목록을 관리하는 모델을 만듭니다.
import 'package:flutter/foundation.dart';
class CommentsModel extends ChangeNotifier {
final List<Comment> _comments = [];
List<Comment> get comments => _comments;
void addComment(Comment comment) {
_comments.add(comment);
notifyListeners();
}
}
4. Provider
사용
댓글 작성 화면에서 provider
를 사용하여 CommentsModel
에 접근합니다.
class CommentScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Consumer<CommentsModel>(builder: (context, model, child) {
return ListView(
children: [
for (var comment in model.comments) CommentWidget(comment: comment),
],
);
}),
floatingActionButton: FloatingActionButton(
onPressed: () {
var newComment = Comment(text: '새로운 댓글', author: '사용자');
Provider.of<CommentsModel>(context, listen: false).addComment(newComment);
},
child: Icon(Icons.add),
),
);
}
}
class CommentWidget extends StatelessWidget {
final Comment comment;
const CommentWidget({Key? key, required this.comment}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(comment.text),
subtitle: Text('작성자: ${comment.author}'),
);
}
}
위의 예시에서는 Consumer
와 Provider.of
를 사용하여 CommentsModel
에 접근하고, 새로운 댓글을 추가하는 방법을 보여줍니다.
마치며
Provider
를 사용하여 플러터 앱에서 상태를 관리하고, 간단한 댓글 시스템을 구현하는 방법에 대해 알아보았습니다.
Provider
를 사용하면 상태 관리가 쉬워지며, 코드도 깔끔해집니다.
더 많은 기능을 추가하고 싶다면, 공식 문서를 참고하는 것이 좋습니다.
위 내용은 Provider 패키지 공식 문서를 참고하여 작성되었습니다.