Skip to content

Commit 3ae6b89

Browse files
committed
feat: modify article
1 parent dc9a84e commit 3ae6b89

19 files changed

+390
-222
lines changed

assets/goguma.png

2.1 MB
Loading

assets/goguma2.png

494 KB
Loading

assets/goguma3.png

92.2 KB
Loading

lib/controller/post_controller.dart

+103-13
Original file line numberDiff line numberDiff line change
@@ -4,61 +4,134 @@ import 'package:kyunghee_market/model/post.dart';
44
class PostController extends GetxController{
55
RxList<Post> posts = <Post>[
66
Post(
7+
id: 0,
78
title: "아이폰 15 pro 팝니다",
89
content: "빨리 가져가세요 ",
910
price: 1555000,
1011
category: '거래',
11-
image: ["./assets/iphone_detail.png","./assets/iphone_detail3.png"],
12-
creator: "알로하오예"),
12+
image: ["./assets/iphone_detail.png","./assets/iphone_detail2.png","./assets/iphone_detail3.png"],
13+
creator: "알로하오예",
14+
createdAt: '2023/12/19'
15+
),
1316
Post(
17+
id: 1,
1418
title: "귤 공짜로 가져가세요",
1519
content: "올해 귤 농사가 잘되어서 나눠드려요!!",
1620
category: '나눔',
1721
image: ["./assets/gyul1.png","./assets/gyul2.png"],
18-
creator: "알로하오예"),
22+
creator: "알로하오예",
23+
createdAt: '2023/12/19'
24+
),
1925
Post(
26+
id: 2,
2027
title: "한정판 춘식이인형 빨리 가져가세요",
2128
content: "한정판입니다. 10000원부터 시작합니다",
2229
price: 10000,
2330
category: '경매',
2431
image: ["./assets/chunsik1.png","./assets/chunsik2.png"],
25-
creator: "알로하오예"),
32+
creator: "알로하오예",
33+
createdAt: '2023/12/19',
34+
deadline: DateTime(2023, 12, 21, 23, 59),
35+
),
2636
Post(
37+
id: 3,
2738
title: "원룸 양도합니다",
2839
content: "지금 살고있는 원룸을 양도하고자 글을 올립니다. 보증금 1000에 월세 + 관리비 해서 30입니다. 많이들 연락주세요",
2940
price: 50,
3041
deposit: 1000,
3142
category: '원룸',
3243
image: ["./assets/oneroom1.png","./assets/oneroom2.png","./assets/oneroom3.png"],
33-
creator: "알로하오예"),
44+
creator: "알로하오예",
45+
createdAt: '2023/12/19'
46+
),
3447
Post(
48+
id: 4,
3549
title: "자격증책 팝니다^^",
3650
content: "싸게팔아요",
37-
price: 400000,
51+
price: 40000,
3852
category: '거래',
3953
image: ["./assets/book.png"],
40-
creator: "알로하오예"),
54+
creator: "알로하오예",
55+
createdAt: '2023/12/19'
56+
),
4157
Post(
58+
id: 5,
4259
title: "토익책 팔아요",
4360
content: "싸게팔아요",
4461
price: 20000,
4562
category: '거래',
4663
image: ["./assets/toeic.png"],
47-
creator: "알로하오예"),
64+
creator: "알로하오예",
65+
createdAt: '2023/12/19'
66+
),
4867
Post(
68+
id: 6,
4969
title: "치킨 기프티콘 팔아요",
5070
content: "기프티콘 팝니당",
5171
price: 18000,
5272
category: '거래',
5373
image: ["./assets/gift.png"],
54-
creator: "알로하오예"),
74+
creator: "알로하오예",
75+
createdAt: '2023/12/19'
76+
),
5577
Post(
78+
id: 7,
5679
title: "맥북 경매요",
5780
content: "싸게팔아요",
5881
price: 1555000,
5982
category: '경매',
6083
image: ["./assets/mac.png"],
61-
creator: "알로하오예"),
84+
creator: "알로하오예",
85+
createdAt: '2023/12/19',
86+
deadline: DateTime(2023, 12, 21, 23, 59),
87+
),
88+
].obs;
89+
90+
RxList<Post> likedPosts = <Post> [
91+
Post(
92+
id:0,
93+
title: "아이폰 15 pro 팝니다",
94+
content: "빨리 가져가세요 ",
95+
price: 1555000,
96+
category: '거래',
97+
image: ["./assets/iphone_detail.png","./assets/iphone_detail2.png","./assets/iphone_detail3.png"],
98+
creator: "알로하오예",
99+
createdAt: '2023/12/19'
100+
),
101+
Post(
102+
id: 3,
103+
title: "원룸 양도합니다",
104+
content: "지금 살고있는 원룸을 양도하고자 글을 올립니다. 보증금 1000에 월세 + 관리비 해서 30입니다. 많이들 연락주세요",
105+
price: 50,
106+
deposit: 1000,
107+
category: '원룸',
108+
image: ["./assets/oneroom1.png","./assets/oneroom2.png","./assets/oneroom3.png"],
109+
creator: "알로하오예",
110+
createdAt: '2023/12/19'
111+
),
112+
Post(
113+
id: 7,
114+
title: "맥북 경매요",
115+
content: "싸게팔아요",
116+
price: 1555000,
117+
category: '경매',
118+
image: ["./assets/mac.png"],
119+
creator: "알로하오예",
120+
createdAt: '2023/12/19',
121+
deadline: DateTime(2023, 12, 21, 23, 59),
122+
),
123+
].obs;
124+
125+
RxList<Post> mypostList = <Post>[
126+
Post(
127+
id: 9,
128+
title: '고구마 나눔합니당',
129+
content: '맛있는 호박고구마에요~ 드셔보세용',
130+
category: '나눔',
131+
image: ["./assets/goguma.png", "./assets/goguma2.png","./assets/goguma3.png"],
132+
creator: "컴공미남",
133+
createdAt: '2023/12/20',
134+
)
62135
].obs;
63136

64137
void addPost(Post post){
@@ -71,11 +144,28 @@ class PostController extends GetxController{
71144
update();
72145
}
73146

74-
void modifyPost(Post post){
75-
int index = posts.indexWhere((element) => element.title == post.title);
147+
void modifyPost(Post updatePost){
148+
int index = posts.indexWhere((post) => post.id == updatePost.id);
76149
if (index != -1) {
77-
posts[index] = post;
150+
posts[index] = updatePost;
78151
}
79152
update();
153+
print("modifyPost method completed. Updated posts: $posts");
80154
}
155+
156+
int _generateUniqueId() {
157+
if (posts.isEmpty) {
158+
return 1; // 초기 id는 1
159+
} else {
160+
return posts.last.id + 1; // 가장 최근 게시물의 id보다 1 증가
161+
}
162+
}
163+
164+
void insertPost(Post newPost) {
165+
posts.insert(0, newPost);
166+
update(); // GetX 상태 갱신
167+
}
168+
169+
170+
81171
}

lib/main.dart

+4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:get/get.dart';
23
import 'package:kyunghee_market/home.dart';
34
import 'package:kyunghee_market/view/detail_view.dart';
45
import 'package:kyunghee_market/view/edit_view.dart';
@@ -13,6 +14,8 @@ import 'package:kyunghee_market/view/profile_view.dart';
1314
import 'package:kyunghee_market/view/report_view.dart';
1415
import 'package:kyunghee_market/view/writing_view.dart';
1516

17+
import 'controller/post_controller.dart';
18+
1619
void main() {
1720
runApp(const MyApp());
1821
}
@@ -23,6 +26,7 @@ class MyApp extends StatefulWidget {
2326
}
2427

2528
class _MyAppState extends State<MyApp> {
29+
final PostController postController = Get.put(PostController());
2630
// This widget is the root of your application.
2731
@override
2832
Widget build(BuildContext context) {

lib/message/article.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:kyunghee_market/view/detail_view.dart';
55
class Article extends StatelessWidget {
66

77
Post post =
8-
Post(title: '스타벅스 기프티콘', content: "스타벅스 기프티콘 팔아여", price: 5000, category: '거래', image: ["./assets/product1.png"], creator: "알로하오예");
8+
Post(title: '아이폰 15 pro 팝니다', content: "빨리 가져가세요", price: 5000, category: '거래', image: ["./iphone_detail.png"], creator: "알로하오예", id: 0, createdAt: '2023/12/19');
99

1010

1111
@override

lib/message/article22.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:kyunghee_market/view/detail_view.dart';
55
class Article22 extends StatelessWidget {
66

77
Post post =
8-
Post(title: '한정판 춘식이인형 빨리 가져가세요', content: "한정판입니다. 10000원부터 시작합니다", price: 10000, category: '경매', image: ["./assets/chunsik1.png"], creator: "알로하오예");
8+
Post(title: '한정판 춘식이인형 빨리 가져가세요', content: "한정판입니다. 10000원부터 시작합니다", price: 10000, category: '경매', image: ["./assets/chunsik1.png"], creator: "알로하오예", id: 2, createdAt: '2023/12/19', deadline: DateTime(2023, 12, 21, 23, 59),);
99

1010

1111
@override

lib/model/post.dart

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import 'dart:ui';
22

3+
import 'package:get/get.dart';
4+
35
class Post{
6+
final int id;
47
final String title;
58
final String content;
69
final String category;
@@ -10,8 +13,10 @@ class Post{
1013
final int? deposit;
1114
final bool? auction;
1215
final DateTime? deadline;
16+
final String createdAt;
1317

1418
const Post({
19+
required this.id,
1520
required this.title,
1621
required this.content,
1722
required this.category,
@@ -21,9 +26,7 @@ class Post{
2126
this.deposit,
2227
this.auction,
2328
this.deadline,
29+
required this.createdAt
2430
});
2531

26-
/*
27-
추후 json 형태로 바꾸는 것 추가
28-
*/
2932
}

lib/view/categorylist_view.dart

+23-23
Original file line numberDiff line numberDiff line change
@@ -157,25 +157,25 @@ class _TradeListState extends State<TradeList> {
157157
decoration: BoxDecoration(
158158
borderRadius: BorderRadius.circular(8.0),
159159
),
160-
child: isAssetImage(widget.posts[widget.posts.length - 1 - index].image.first)
160+
child: isAssetImage(widget.posts[index].image.first)
161161
? Image.asset(
162-
widget.posts[widget.posts.length - 1 - index].image.first,
162+
widget.posts[index].image.first,
163163
fit: BoxFit.cover,
164164
)
165165
: Image.file(
166-
File(widget.posts[widget.posts.length - 1 - index].image.first),
166+
File(widget.posts[index].image.first),
167167
fit: BoxFit.cover,
168168
),
169169
),
170-
title: Text(widget.posts[widget.posts.length - 1 - index].title, style: TextStyle(
170+
title: Text(widget.posts[index].title, style: TextStyle(
171171
fontSize: 18
172172
),), // 게시글 제목
173-
subtitle: Text('${widget.posts[widget.posts.length - 1 - index].price}원'), // 가격
173+
subtitle: Text('${widget.posts[index].price}원'), // 가격
174174
onTap: () {
175175
Navigator.push(
176176
context,
177177
MaterialPageRoute(
178-
builder: (context) => DetailView(post: widget.posts[widget.posts.length - 1 - index]),
178+
builder: (context) => DetailView(post: widget.posts[index]),
179179
),
180180
);
181181
},
@@ -216,25 +216,25 @@ class _AuctionListState extends State<AuctionList> {
216216
decoration: BoxDecoration(
217217
borderRadius: BorderRadius.circular(8.0),
218218
),
219-
child: isAssetImage(widget.posts[widget.posts.length - 1 - index].image.first)
219+
child: isAssetImage(widget.posts[index].image.first)
220220
? Image.asset(
221-
widget.posts[widget.posts.length - 1 - index].image.first,
221+
widget.posts[index].image.first,
222222
fit: BoxFit.cover,
223223
)
224224
: Image.file(
225-
File(widget.posts[widget.posts.length - 1 - index].image.first),
225+
File(widget.posts[index].image.first),
226226
fit: BoxFit.cover,
227227
),
228228
),
229-
title: Text(widget.posts[widget.posts.length - 1 - index].title, style: TextStyle(
229+
title: Text(widget.posts[index].title, style: TextStyle(
230230
fontSize: 18
231231
),), // 게시글 제목
232-
subtitle: Text('${widget.posts[widget.posts.length - 1 - index].price}원부터~'), // 가격
232+
subtitle: Text('${widget.posts[index].price}원부터~'), // 가격
233233
onTap: () {
234234
Navigator.push(
235235
context,
236236
MaterialPageRoute(
237-
builder: (context) => DetailView(post: widget.posts[widget.posts.length - 1 - index]),
237+
builder: (context) => DetailView(post: widget.posts[index]),
238238
),
239239
);
240240
},
@@ -275,25 +275,25 @@ class _ShareListState extends State<ShareList> {
275275
decoration: BoxDecoration(
276276
borderRadius: BorderRadius.circular(8.0),
277277
),
278-
child: isAssetImage(widget.posts[widget.posts.length - 1 - index].image.first)
278+
child: isAssetImage(widget.posts[index].image.first)
279279
? Image.asset(
280-
widget.posts[widget.posts.length - 1 - index].image.first,
280+
widget.posts[index].image.first,
281281
fit: BoxFit.cover,
282282
)
283283
: Image.file(
284-
File(widget.posts[widget.posts.length - 1 - index].image.first),
284+
File(widget.posts[index].image.first),
285285
fit: BoxFit.cover,
286286
),
287287
),
288-
title: Text(widget.posts[widget.posts.length - 1 - index].title, style: TextStyle(
288+
title: Text(widget.posts[index].title, style: TextStyle(
289289
fontSize: 18
290290
),), // 게시글 제목
291291
subtitle: Text('무료'), // 가격
292292
onTap: () {
293293
Navigator.push(
294294
context,
295295
MaterialPageRoute(
296-
builder: (context) => DetailView(post: widget.posts[widget.posts.length - 1 - index]),
296+
builder: (context) => DetailView(post: widget.posts[index]),
297297
),
298298
);
299299
},
@@ -334,26 +334,26 @@ class _OneRoomListState extends State<OneRoomList> {
334334
decoration: BoxDecoration(
335335
borderRadius: BorderRadius.circular(8.0),
336336
),
337-
child: isAssetImage(widget.posts[widget.posts.length - 1 - index].image.first)
337+
child: isAssetImage(widget.posts[index].image.first)
338338
? Image.asset(
339-
widget.posts[widget.posts.length - 1 - index].image.first,
339+
widget.posts[index].image.first,
340340
fit: BoxFit.cover,
341341
)
342342
: Image.file(
343-
File(widget.posts[widget.posts.length - 1 - index].image.first),
343+
File(widget.posts[index].image.first),
344344
fit: BoxFit.cover,
345345
),
346346
),
347-
title: Text(widget.posts[widget.posts.length - 1 - index].title, style: TextStyle(
347+
title: Text(widget.posts[index].title, style: TextStyle(
348348
fontSize: 18
349349
),), // 게시글 제목
350350
subtitle: Text(
351-
'${widget.posts[widget.posts.length - 1 - index].price}/${widget.posts[widget.posts.length - 1 - index].deposit}'), // 가격
351+
'보증금 ${widget.posts[index].deposit} / ${widget.posts[index].price}'), // 가격
352352
onTap: () {
353353
Navigator.push(
354354
context,
355355
MaterialPageRoute(
356-
builder: (context) => DetailView(post: widget.posts[widget.posts.length - 1 - index]),
356+
builder: (context) => DetailView(post: widget.posts[index]),
357357
),
358358
);
359359
},

0 commit comments

Comments
 (0)