So, the code is now refactored:
import SwiftUI
struct ContentView: View {
		@State var views = [false, false, false, false]
		
		let Views : [AnyView] = [AnyView(View1()), AnyView(View2()), AnyView(View3()), AnyView(View4())]
		private var gridItemLayout = [GridItem(.flexible()), GridItem(.flexible())]
		private var viewTexts = ["View1", "View2", "View3", "View4"]
		
		var textSize: CGFloat {
				if UIDevice.current.userInterfaceIdiom == .pad {
						return 48
				}
				return 23
		}
		
		var title: CGFloat {
				if UIDevice.current.userInterfaceIdiom == .pad {
						return 60
				}
				return 34
		}
		
		var height: CGFloat {
				if UIDevice.current.userInterfaceIdiom == .pad {
						return 0.15
				}
				return 0.15
		}
		
		var weight: CGFloat {
				if UIDevice.current.userInterfaceIdiom == .pad {
						return 0.44
				}
				return 0.43
		}
		
		var body: some View {
				NavigationView{
						GeometryReader { geometry in
								ScrollView(.vertical, showsIndicators: true) {
										LazyVGrid(columns: gridItemLayout, spacing: 18) {
												Group {
														ForEach(0..<views.count) { i in
																Text(viewTexts[i])
																		.foregroundColor(.black)
																		.frame(width: geometry.size.width * weight, height: geometry.size.height * height)
																		.background(Color.white)
																		.onTapGesture {
																				views[i] = true
																		}
																		.sheet(isPresented: $views[i]) {
																				Views[i]
																		}
														}
												}
										}.padding()
								}
						}
						.navigationTitle("Title")
						
				}
		}
		
}
struct View1: View {
		var body: some View {
				Text("View1")
		}
}
struct View2: View {
		var body: some View {
				Text("View2")
		}
}
struct View3: View {
		var body: some View {
				Text("View3")
		}
}
struct View4: View {
		var body: some View {
				Text("View4")
		}
}