flutter - 在简单对话框 Flutter 中更新数据
问题描述
调用函数时如何ListView
在对话框中更新_issueItem()
?当我按下按钮问题项时没有任何反应,ListView
没有更新。ListView
在 StatefulBuilder 中,但它不起作用。请帮忙。我在按下时打电话,setState
当我想更新时打电话,但没有任何效果。issue item button
setState
ListView
我的 ListView 代码
StatefulBuilder createIssuedItemsList(List<IssuedItems>? issuedItems) {
return StatefulBuilder(
builder: (context, setState) {
return ListView.separated(
itemCount: issuedItems!.length,
separatorBuilder: (context, index) {
return const Divider();
},
itemBuilder: (context, index) {
IssuedItems _issuedItems = issuedItems[index];
Uint8List _bytes =
const Base64Decoder().convert(_issuedItems.photo.toString());
return GestureDetector(
onTap: () => {log(_issuedItems.item)},
child: ListTile(
title: Text(_issuedItems.item +
', ' +
_issuedItems.count +
' ' +
_issuedItems.countOption +
', ' +
_issuedItems.date),
leading: Container(
height: 7.h,
width: 7.w,
decoration: BoxDecoration(
image: DecorationImage(
image: Image.memory(_bytes).image))),
),
);
},
);
},
);}
发行项目
Response response =
await ServerSideApi.create(UserState.getIP()!, 1).issueItem(data);
switch (response.body) {
case 'not_enough_items':
_showToast(4);
break;
case 'count_option_error':
_showToast(5);
break;
case 'item_already_issued':
_showToast(6);
break;
case 'item_issued_successfully':
_showToast(7);
Navigator.pop(context);
setState(() {
getIssuedItems(brigadeNumber);
});
break;
}
附加从服务器发出的项目的功能
FutureBuilder<Response<List<IssuedItems>>> getIssuedItems(String brigadeNumber) {
var data = {'brigade': brigadeNumber};
return FutureBuilder<Response<List<IssuedItems>>>(
future: ServerSideApi.create(UserState.getIP()!, 6).getIssuedItems(data),
builder: (context, snapshot) {
while (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
}
if (snapshot.connectionState == ConnectionState.done &&
snapshot.hasData) {
var issuedItems = snapshot.data!.body;
log(issuedItems.toString());
return createIssuedItemsList(issuedItems);
} else {
return const Center(
child: Text('Нет выданных товаров'),
);
}
},
);}
发布项目按钮
FloatingActionButton.extended(
label: const Text('Выдать'),
onPressed: () => setState(() {
_issueItem(brigade.brigadeNumber, _itemIndex!,
dropDownItemName!, listOfTextEditingController);
}))
解决方案
推荐阅读
- javascript - 尝试创建一个将更改字体系列的按钮
- odata - 在 .Net Core 3.1 OData EDMModelBuilder 中公开私有设置器
- c++ - 尝试使用 CreateFileMapping 和自定义 DACL 创建只读共享内存区域在 OpenFileMapping 中失败
- laravel - 更改 Laravel Web Tinker 公共文件目录 - 防止保存时出现 403 错误
- powerbi - 如何使用 PowerBI DAX 瀑布图计算方差
- python - 收到此错误 InvalidArgumentError: Default MaxPoolingOp only support NHWC on device type CPU [[node sequences_5/max_pooling2d_5/MaxPool
- git - 如何在 GitHub 上保留最新版本的二进制文件而不完全跟踪它们?
- python - 无法导入 IMDB
- c# - 在鼠标进入或拖动完成时锁定 ContentPresenter 的 zIndex
- java - 为什么即使条件为假,我的 while 循环仍在运行?