get状态管理

来源:16-4 使用Obx与GetX做状态管理

BernhardRiemann

2024-04-27

图片描述
图片描述
老师你好,16-4节,旅拍travel_tab_page改造,如上图,同样里面都有响应式的变量,为什么下面一个函数要用Obx包裹,上面一个函数不需要包裹。有点困惑

写回答

1回答

CrazyCodeBoy

2024-04-27

因为gridview是已经嵌套在obx下使用了。
1
3
星辰大海1497010
回复
慕函数3061895
回复 慕函数3061895:在 `GetX` 中,当使用 `.obs` 使变量变成可观察对象时,访问该变量的值通常需要 `.value`。但对于 `List` 类型的 `RxList`,GetX 进行了特殊处理,使其可以像普通 `List` 一样使用,而无需 `.value`。 ### 解释: 1. `travelItems = [].obs;` - 这里 `travelItems` 变成了 `RxList`,GetX 已经对 `List` 进行了封装,使其可以直接像普通列表一样操作。 - 因此,你可以直接使用 `controller.travelItems[index]`,而不需要 `controller.travelItems.value[index]`。 2. 但如果是 `Rx` 包装的其他类型,例如 `RxBool`、`RxInt`,就需要使用 `.value`: ```dart final loading = true.obs; ``` - 这里 `loading` 是 `RxBool` 类型,所以 `controller.loading.value` 是必须的。 ### 结论: - **RxList(如 `travelItems`)** → 直接使用 `controller.travelItems[index]`(无需 `.value`)。 - **Rx 基础类型(如 `RxBool`、`RxInt`、`RxString`)** → 需要 `.value` 访问值,如 `controller.loading.value`。 这样 GetX 让列表的使用更加直观,而不需要额外的 `.value` 访问符。
2025-02-05
共3条回复

慕课甄选-Flutter零基础极速入门到进阶实战

全新Flutter从入门到进阶,实战仿携程网App

661 学习 · 316 问题

查看课程