颤振:getx RxList 不是 运行 obx 生成器
flutter: getx RxList not run obx builder
我在我的项目中使用 getx。我有 RxList
并购买了 Obx 我在小部件上显示了我的数据:
RxList<VocabularyModel> vocabs = RxList();
和小部件:
return Scaffold(
body: SafeArea(
child: Obx(
() => ListView.builder(
// ignore: invalid_use_of_protected_member
itemCount: controller.vocabs.value.length,
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8),
在控制器中,我有方法删除 vocabs 中的对象:
void changeToRememberState(int index) {
final upateItem = vocabs.value[index].copyWith(remember: true);
vocabs.value.removeAt(index);
// repository.changeToRememberState(index, upateItem);
}
但是当我从 vocabs 中删除对象时,Obx
构建器没有被触发?为什么?我从 RxList 中删除了一个元素,为什么 RxList 没有触发?
列表 默认为反应式 (Rx)。因此,如果您使用 RxList
或 [].obs
,则不应使用 .value
访问它。或者我应该说,你不应该忽略:invalid_use_of_protected_member。这就是为什么您的 Obx
在您删除时没有触发重建。因为您要删除基础 List 元素而不是从流中删除。
除非使用 Rx<List<VocabularyModel>>
,否则不应使用 vocabs.value
。
因此从 vocabs
中删除 .value
将解决重建问题。
小部件:
return Scaffold(
body: SafeArea(
child: Obx(
() => ListView.builder(
itemCount: controller.vocabs.length,
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8),
控制器:
void changeToRememberState(int index) {
final upateItem = vocabs[index].copyWith(remember: true);
vocabs.removeAt(index);
}
我在我的项目中使用 getx。我有 RxList
并购买了 Obx 我在小部件上显示了我的数据:
RxList<VocabularyModel> vocabs = RxList();
和小部件:
return Scaffold(
body: SafeArea(
child: Obx(
() => ListView.builder(
// ignore: invalid_use_of_protected_member
itemCount: controller.vocabs.value.length,
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8),
在控制器中,我有方法删除 vocabs 中的对象:
void changeToRememberState(int index) {
final upateItem = vocabs.value[index].copyWith(remember: true);
vocabs.value.removeAt(index);
// repository.changeToRememberState(index, upateItem);
}
但是当我从 vocabs 中删除对象时,Obx
构建器没有被触发?为什么?我从 RxList 中删除了一个元素,为什么 RxList 没有触发?
列表 默认为反应式 (Rx)。因此,如果您使用 RxList
或 [].obs
,则不应使用 .value
访问它。或者我应该说,你不应该忽略:invalid_use_of_protected_member。这就是为什么您的 Obx
在您删除时没有触发重建。因为您要删除基础 List 元素而不是从流中删除。
除非使用 Rx<List<VocabularyModel>>
,否则不应使用 vocabs.value
。
因此从 vocabs
中删除 .value
将解决重建问题。
小部件:
return Scaffold( body: SafeArea( child: Obx( () => ListView.builder( itemCount: controller.vocabs.length, itemBuilder: (context, index) { return Padding( padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8),
控制器:
void changeToRememberState(int index) { final upateItem = vocabs[index].copyWith(remember: true); vocabs.removeAt(index); }