我正面临着一个问题,在我当前的项目重建future 的建设者每当数据被添加或更新.
在将数字添加到数字中后,应该重新构建future 的生成器以显示所有更新的数字.
我已经在OBX内部包装了Future Builder,但它没有重建,因为它里面不包含任何OBS变量…
那么如何刷新它..关于增加或删除号码
Widget build(BuildContext context) {
final controller = Get.put(DataController());
return Scaffold(
body: Column(
children: [
Expanded(
child: Obx(
()=>FutureBuilder(
future: controller.fetchData(),
builder: (context, snapshot) {
const loader = Center(child: CircularProgressIndicator());
if (snapshot.connectionState == ConnectionState.waiting)
return loader;
if (!snapshot.hasData ||
snapshot.data == null ||
snapshot.data!.isEmpty)
return Center(
child: Text('No data found'),
);
if (snapshot.hasError) {
return const Center(
child: Text('Error found'),
);
}
final allData = snapshot.data!;
return ListView.builder(
shrinkWrap: true,
itemCount: allData.length,
itemBuilder: (context, index) {
final data = allData[index];
return ListTile(
title: Text(data.toString()),
);
});
})
),
),
SizedBox(
height: 100,
width: double.infinity,
child: ElevatedButton(onPressed: (){
final num=Random().nextInt(1000);
numbers.add(num);
},child: Text('Add Number'),))
],
),
);
}
数据控制器数据控制器
class DataController extends GetxController {
RxBool isLoading = false.obs;
Future<List<int>> fetchData() async {
try {
isLoading.value = true;
final data = numbers;//numbers is a list[int] stored in different file
return data;
} catch (e) {
print('Something wrong');
return [];
} finally {
isLoading.value = false;
}
}
}
对于数据源 我刚刚在一个海珍珠文件中创建了一个int列表
List<int> numbers=[1,2,3];