[Video Summary] Ch. 8.10 Loading & Displaying Images from Firebase Cloud Storage in a SwiftUI ScrollView (2024)
Mô tả nhanh
Video này hướng dẫn cách tải và hiển thị hình ảnh từ Firebase Cloud Storage trong một ScrollView SwiftUI, sử dụng URL đã lưu trong Cloud Firestore. Video cũng cung cấp cách tạo dữ liệu mock cho preview, khắc phục các lỗi preview và đọc dữ liệu thực từ Firebase.
Video
Mô tả chi tiết
Video này hướng dẫn cách tải và hiển thị hình ảnh từ Firebase Cloud Storage trong một ScrollView SwiftUI, sử dụng URL đã lưu trong Cloud Firestore. Cụ thể:
- Kiểm tra dữ liệu trên Firebase: Video bắt đầu bằng việc kiểm tra các hình ảnh đã được lưu trữ trên Firebase Cloud Storage và URL của chúng trong Cloud Firestore. Một hình ảnh mới được thêm vào để đảm bảo mọi thứ hoạt động đúng.
- Sử dụng Async Image: Các URL được sử dụng để tải hình ảnh bằng SwiftUI
AsyncImage
, tương tự như cách đã dùng trong dự án Pokémon trước đây. - Thay đổi Photo View:
- Thêm
TextField
để nhập mô tả (description) cho ảnh trongPhotoView
. - Ẩn/hiện
Picker
trongPhotoView
để xem UI bên dưới.
- Thêm
- Tạo Mock Data:
- Tạo extension cho class
Photo
để thêm static variablepreview
, chứa dữ liệu mock. - Thêm initializer cho class
Photo
, giúp tạo instance mới với các thuộc tính. - Nhập một URL hình ảnh từ Wikipedia để làm dữ liệu mock.
- Tạo extension cho class
- Tạo Horizontal ScrollView:
- Sử dụng
ScrollView
với thuộc tínhaxes
được đặt là.horizontal
để tạo ScrollView ngang. - Sử dụng
HStack
để xếp các ảnh theo chiều ngang. - Sử dụng
ForEach
để lặp qua mảng dữ liệu mock (sau này là dữ liệu từ Firestore). - Sử dụng
AsyncImage
để hiển thị hình ảnh,ProgressView
khi đang tải. - Sử dụng các thuộc tính
.resizable
,.scaledToFill
,.frame
và.clipped
để tùy chỉnh hình ảnh hiển thị.
- Sử dụng
- Đọc dữ liệu từ Firebase:
- Import thư viện
Firebase
vàFirebaseFirestore
. - Sử dụng
@FirebaseQuery
để lấy dữ liệu từ Firebase Firestore. - Lưu ý: Không thể sử dụng trực tiếp
spot.ID
trongFirebaseQuery
vì property initializer chạy trước khiself
có sẵn. - Sử dụng
task
modifier để cập nhật collection path khi view đã load xong. - Thay thế mảng dữ liệu mock trong
ForEach
bằng mảngphotos
được lấy từ Firebase. - Xử lý lỗi preview bằng cách truyền tham số khi khởi tạo
Spot
cho preview provider.
- Import thư viện
Video kết thúc bằng cách kiểm tra kết quả, thêm hình ảnh mới và hiển thị chúng trên giao diện, đồng thời giới thiệu cách khắc phục các sự cố trong preview.
Chúc bạn có những trải nghiệm học tập thú vị!