可以使用 RxList 代替 Observe List,并使用 update() 方法更新列表。这可以避免因更新列表时触发的嵌套 GetX 观察导致的循环。下面是一个示例:
class MyController extends GetxController {
var items = RxList<Item>([]);
addItem(Item item) {
items.update((list) => list..add(item));
}
}
class Item {
String name;
Item(this.name);
}
class MyHomePage extends StatelessWidget {
final MyController controller = Get.put(MyController());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('GetX Observe List Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GetX<MyController>(
builder: (controller) {
return Text('List length: ${controller.items.length}');
},
),
ElevatedButton(
child: Text('Add Item'),
onPressed: () {
final item = Item('New Item');
controller.addItem(item);
},
),
],
),
),
);
}
}