[Video Summary] Ch. 8.10 Loading & Displaying Images from Firebase Cloud Storage in a SwiftUI ScrollView (2024)

SwiftUI 6 Th02 2025

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

Click vào hình dưới để mở:
Ch. 8.10 Loading & Displaying Images from Firebase Cloud Storage in a SwiftUI ScrollView (2024)

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ể:

  1. 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.
  2. 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.
  3. Thay đổi Photo View:
    • Thêm TextField để nhập mô tả (description) cho ảnh trong PhotoView.
    • Ẩn/hiện Picker trong PhotoView để xem UI bên dưới.
  4. Tạo Mock Data:
    • Tạo extension cho class Photo để thêm static variable preview, 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.
  5. Tạo Horizontal ScrollView:
    • Sử dụng ScrollView với thuộc tính axes đượ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.clipped để tùy chỉnh hình ảnh hiển thị.
  6. Đọc dữ liệu từ Firebase:
    • Import thư viện FirebaseFirebaseFirestore.
    • 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 trong FirebaseQuery vì property initializer chạy trước khi self 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ảng photos đượ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.

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ị!

Tags