Login to fireabase and create database https://console.firebase.google.com/
SDWebImage https://github.com/SDWebImage/SDWebImageSwiftUI
ContentView.swift
//
// ContentView.swift
// DevSwiftUI
//
// Created by Cairocoders
//
import SwiftUI
import Firebase
import SDWebImageSwiftUI
struct ContentView: View {
var body: some View {
Main()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Main : View {
@ObservedObject var obser = observer()
var body : some View{
NavigationView {
List(obser.users) { i in
NavigationLink(destination : Details(userItem: i)) {
HStack {
AnimatedImage(url: URL(string: i.image)).resizable().frame(width: 60, height: 60).clipShape(Circle()).shadow(radius: 20)
Text(i.name).padding(.leading, 10)
}
}
}.navigationBarTitle("Users")
}
}
}
datatypes.swift
//
// datatypes.swift
// DevSwiftUI
//
// Created by Cairocoders
//
import Foundation
import SwiftUI
struct datatype : Identifiable {
var id : String
var name : String
var image : String
var age : String
var status : String
}
observer.swift
//
// observer.swift
// DevSwiftUI
//
// Created by Cairocoders
//
import SwiftUI
import Firebase
class observer : ObservableObject{
@Published var users = [datatype]()
init() {
let db = Firestore.firestore()
db.collection("users").getDocuments { (snap, err) in
if err != nil{
print((err?.localizedDescription)!)
return
}
for i in snap!.documents{
let name = i.get("name") as! String
let age = i.get("age") as! String
let image = i.get("image") as! String
let id = i.documentID
let status = i.get("status") as! String
if status == ""{
self.users.append(datatype(id: id, name: name, image: image, age: age, status: status))
}
}
}
}
}
Details.swift
//
// Details.swift
// DevSwiftUI
//
// Created by Cairocoders
//
import SwiftUI
import SDWebImageSwiftUI
struct Details: View {
let userItem : datatype
var body: some View {
GeometryReader{geo in
//Text(userItem.name)
VStack {
Text("Username : \(userItem.name)")
.font(.title2)
AnimatedImage(url: URL(string: userItem.image))
.resizable().frame(height: geo.size.height - 100)
.padding(.horizontal, 15)
.cornerRadius(20)
}
}
}
}
DevSwiftUIApp.swift
//
// DevSwiftUIApp.swift
// DevSwiftUI
//
// Created by Cairocoders
//
import SwiftUI
import Firebase
@main
struct DevSwiftUIApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject,UIApplicationDelegate{
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
