This commit is contained in:
anlicheng 2025-03-31 17:27:28 +08:00
parent 953b4a5a36
commit 283c3ae78a
2 changed files with 49 additions and 36 deletions

View File

@ -54,35 +54,17 @@ final class FollowListModel {
struct FollowListView: View { struct FollowListView: View {
@AppStorage("userId") private var userId: String = Utils.defaultUserId() @AppStorage("userId") private var userId: String = Utils.defaultUserId()
@Environment(\.dismiss) private var dismiss
@State var followModel = FollowListModel() @State var followModel = FollowListModel()
@State var isMoreLoading: Bool = false @State var isMoreLoading: Bool = false
var body: some View { var body: some View {
VStack(alignment: .center) { VStack(alignment: .center) {
Rectangle()
HStack(alignment: .center) { .frame(height: 0)
Color.clear
.overlay(alignment: .leading) {
HStack(alignment: .center, spacing: 3) {
Button(action: {
dismiss()
}) {
Image(systemName: "chevron.left")
.font(.system(size: 20, weight: .medium))
Text("番剧补完计划")
.font(.system(size: 16))
.foregroundColor(Color(hex: "#333333"))
}
}
}
}
.frame(height: 50)
.background(Color(hex: "#F2F2F2"), ignoresSafeAreaEdges: .top) .background(Color(hex: "#F2F2F2"), ignoresSafeAreaEdges: .top)
.border(.red)
Group {
if followModel.dramas.count > 0 { if followModel.dramas.count > 0 {
ScrollView(.vertical, showsIndicators: false) { ScrollView(.vertical, showsIndicators: false) {
LazyVStack(alignment: .center) { LazyVStack(alignment: .center) {
@ -102,7 +84,9 @@ struct FollowListView: View {
} }
} }
.frame(width: 370) .frame(width: 370)
}
.ignoresSafeArea(edges: .bottom) .ignoresSafeArea(edges: .bottom)
.navigationTitle("番剧补完计划")
.task { .task {
await self.followModel.loadData(userId: self.userId) await self.followModel.loadData(userId: self.userId)
} }

View File

@ -56,6 +56,9 @@ final class IndexModel {
var updateDramaGroups: [UpdateDramaGroup] = [] var updateDramaGroups: [UpdateDramaGroup] = []
var follow_num: String = "0" var follow_num: String = "0"
// group_name
var fixedGroupName: String = ""
@ObservationIgnored @ObservationIgnored
private var isLoaded = false private var isLoaded = false
@ -326,10 +329,11 @@ extension IndexView {
.background(Color(hex: "#F2F2F2"), ignoresSafeAreaEdges: .top) .background(Color(hex: "#F2F2F2"), ignoresSafeAreaEdges: .top)
ScrollView(.vertical, showsIndicators: false) { ScrollView(.vertical, showsIndicators: false) {
// //
LazyVStack(alignment: .center, spacing: 10) { LazyVStack(alignment: .center, spacing: 10) {
ForEach(indexModel.updateDramaGroups, id: \.group_id) { group in ForEach(indexModel.updateDramaGroups, id: \.group_id) { group in
DramaGroupView(group: group) { DramaGroupView(group: group, model: indexModel) {
selectGroupId = group.group_id selectGroupId = group.group_id
indexModel.selectedDate = group.group_id indexModel.selectedDate = group.group_id
showDateNavPopover = true showDateNavPopover = true
@ -373,6 +377,20 @@ extension IndexView {
await self.indexModel.loadMoreUpdateDramas(userId: self.userId, mode: .prev) await self.indexModel.loadMoreUpdateDramas(userId: self.userId, mode: .prev)
self.isPrevLoading = false self.isPrevLoading = false
} }
.overlay(alignment: .topTrailing) {
HStack {
Text("🔍")
Spacer()
Text(indexModel.fixedGroupName)
.font(.system(size: 18))
.fontWeight(.regular)
.onTapGesture {
print("call me here")
}
}
.padding(8)
.background(.white)
}
} }
.ignoresSafeArea(edges: .bottom) .ignoresSafeArea(edges: .bottom)
.popover(isPresented: $showDateNavPopover) { .popover(isPresented: $showDateNavPopover) {
@ -394,6 +412,8 @@ extension IndexView {
// //
struct DramaGroupView: View { struct DramaGroupView: View {
let group: IndexModel.UpdateDramaGroup let group: IndexModel.UpdateDramaGroup
let model: IndexModel
var onTap: () -> Void var onTap: () -> Void
var body: some View { var body: some View {
@ -407,6 +427,14 @@ extension IndexView {
onTap() onTap()
} }
} }
.background(GeometryReader {
geometry in
Color.clear.onChange(of: geometry.frame(in: .named("indexScrollView")).minY) {_, y in
if abs(y) <= 5 {
model.fixedGroupName = group.group_name
}
}
})
ForEach(group.items, id: \.id) { item in ForEach(group.items, id: \.id) { item in
NavigationLink(destination: DetailView(id: item.id)) { NavigationLink(destination: DetailView(id: item.id)) {
@ -453,6 +481,7 @@ extension IndexView {
} }
} }
} }
} }
#Preview { #Preview {