[Video Summary] Ch. 8.11 Tap for Star Ratings in SwiftUI + Review Details (Snacktacular app)
Mô tả nhanh
Video này hướng dẫn cách tạo một struct Review, một view hiển thị chi tiết review, và một view cho phép người dùng chọn rating từ 1 đến 5 sao. Video cũng hướng dẫn cách tổ chức code bằng cách tạo các folder groups (models, view models, views) trong dự án.
Video
Mô tả chi tiết
Video này hướng dẫn cách tạo một struct Review, một view hiển thị chi tiết review, và một view cho phép người dùng chọn rating từ 1 đến 5 sao. Video cũng hướng dẫn cách tổ chức code bằng cách tạo các folder groups (models, view models, views) trong dự án.
Dưới đây là các bước chi tiết:
-
Tổ chức file trong project navigator:
- Tạo folder
modelsđể chứa các model (ví dụ:Spot.swift,Review.swift). - Tạo folder
view modelsđể chứa các view model (ví dụ:SpotViewModel.swift,LocationManager.swift). - Tạo folder
viewsđể chứa các view (ví dụ:LoginView.swift,ListView.swift,SpotDetailView.swift,PlaceLookupView.swift).
- Tạo folder
-
Tạo struct
Review:- Tạo file
Review.swifttrong foldermodels. - Import các thư viện cần thiết:
Firebase,FirebaseFirestoreSwift. - Định nghĩa struct
Reviewvới các thuộc tính:id:String?(dùng property wrapper@DocumentID).title:String(tiêu đề review).body:String(nội dung review).rating:Int(số sao rating).reviewer:String(email của người review).postedOn:Date(thời gian review).
- Thêm computed property
dictionaryđể chuyển đổi đối tượng thành dictionary để lưu trữ lên Cloud Firestore.
- Tạo file
-
Tạo view
ReviewView:- Tạo file
ReviewView.swifttrong folderviews. - Khai báo các biến
@State:spot(Spot),review(Review). - Khai báo biến môi trường
@Environment:dismiss. - Trong
PreviewProvider, khởi tạoSpotvàReviewđể hiển thị preview. - Xây dựng giao diện người dùng:
- Hiển thị tên và địa chỉ của
spot. - Thêm
Spacerđể đẩy các phần tử lên trên. - Thêm
VStackđể căn chỉnh các phần tử sang trái. - Thêm
frameđể đảm bảoVStackluôn ở lề trái của màn hình. - Thêm
toolbarvới nút "Cancel" và "Save". - Thêm text view "Click to rate".
- Thêm
HStackđể hiển thị sao rating (tạm thời là các imagestar.fill). - Thêm text view cho review title và text field để nhập tiêu đề.
- Thêm text view cho review body và text field với khả năng cuộn để nhập nội dung review.
- Thêm các modifier để định dạng giao diện.
- Hiển thị tên và địa chỉ của
- Tạo file
-
Tạo view
StarsSelectionView:- Tạo file
StarsSelectionView.swift. - Định nghĩa các constant để tùy chỉnh giao diện:
highestRating(số sao tối đa),unselected(ảnh sao chưa chọn),selected(ảnh sao đã chọn),font,fillColor(màu sao khi chọn),emptyColor(màu sao khi chưa chọn). - Trong
body, tạoHStackchứa các sao bằng vòng lặpForEach. - Thêm func
showStar(for number: Int) -> Imageđể trả về ảnh sao đã chọn hoặc chưa chọn dựa trên rating hiện tại. - Thêm modifier
onTapGestuređể cập nhật rating khi người dùng chạm vào một sao. - Trong
ReviewView, thay thếHStackhiển thị các sao bằngStarSelectionView. - Thêm
overlaychoStarSelectionViewđể tạo viền bao quanh các ngôi sao.
- Tạo file
Video này tập trung vào tạo data model và một view cơ bản cho phép người dùng review nhà hàng. Các phần như lưu dữ liệu lên cloud hay xử lý interactive sẽ được hoàn thiện thêm trong các video tiếp theo.
Chúc bạn có những giây phút code thật vui!
