[Video Summary] Ch. 8.13 Part II - SwiftUI @FirestoreQuery - Finishing Adding & Viewing Reviews (Snacktacular App)

SwiftUI 6 Th02 2025

Mô tả nhanh

Video này hướng dẫn cách sửa lỗi crash khi thêm địa điểm mới vào ứng dụng Snacktacular, giới thiệu về alert đa nút, cách reset thuộc tính bọc Firestore Query, và cách cải thiện giao diện người dùng dựa trên trạng thái dữ liệu.

Video

Click vào hình dưới để mở:
Ch. 8.13 Part II - SwiftUI @FirestoreQuery - Finishing Adding & Viewing Reviews (Snacktacular App)

Mô tả chi tiết

Video này hướng dẫn cách sửa lỗi crash khi thêm địa điểm mới vào ứng dụng Snacktacular, giới thiệu về alert đa nút, cách reset thuộc tính bọc Firestore Query, và cách cải thiện giao diện người dùng dựa trên trạng thái dữ liệu.

  • Sửa lỗi crash khi thêm địa điểm mới:
    • Lỗi xảy ra do spot.idnil khi tạo một địa điểm mới, dẫn đến path không hợp lệ trong Firestore.
    • Khắc phục bằng cách thêm điều kiện kiểm tra spot.id có khác nil trước khi cập nhật path.
    • Cần phải kiểm tra và lưu địa điểm trước khi cho phép thêm review.
  • Alert đa nút:
    • Sử dụng @State private var showSaveAlert để điều khiển hiển thị alert.
    • Cấu hình alert với title, message, và các nút "Cancel" và "Save".
    • Nút "Save" sẽ thực hiện lưu spot, và toggle review sheet nếu thành công.
    • Hiển thị alert khi spot.idnil và người dùng click vào "Rate It".
  • Cập nhật spot.id và reset path:
    • Trong spotViewModel, sau khi lưu spot, cập nhật self.spot với ID mới từ documentRef.documentID.
    • Sau khi lưu spot thành công, update lại spot trong spotDetailView từ spotViewModel.
    • Reset reviews.path sau khi lưu spot để hiển thị review của spot mới.
  • Cải thiện giao diện người dùng:
    • Sử dụng @State private var showingAsSheet để xác định view được hiển thị dưới dạng sheet hay navigation link.
    • Thay đổi hiển thị nút "Cancel" và "Save" hoặc "Done" trên toolbar dựa trên điều kiện spot.idshowingAsSheet.
    • Ẩn các trường nhập liệu và nút "Look Up Place" khi spot đã được lưu.

Chúc bạn học tập hiệu quả và có những dự án iOS/macOS thật thú vị!

Tags