flutter - Flutter:禁用 ExpansionTile
问题描述
我有一个ExpansionTile
检查是否允许用户启用它:
ExpansionTile(
tilePadding: widget.rent ? EdgeInsets.all(0) : null,
onExpansionChanged: (bool value) {
if (_canCreateBill) {
setState(() {
_billable = value;
});
} else {
return Navigator.of(context)
.pushNamed('/invoice-details')
.then((val) async {
await _getBillingInfo();
setState(() {
_billable =
_canCreateBill;
});
});
}
widget.onSwitchChange(value);
},
initiallyExpanded: _billable,
title: Text(translate('expense.create_invoice')),
subtitle: Text(translate('expense.create_invoice_info')),
trailing: IgnorePointer(
child: Switch(
value: _billable,
onChanged: (_) {},
),
),
children: [
Visibility(
visible: _canCreateBill,
child: _billingInfo(),
),
],
);
快乐路径:
这里我们有_canCreateBill
哪些控制用户是否可以启用开关。如果用户点击并且他不被允许,我将他移动到一个页面以添加一些信息。添加该信息后,他回来并启用了开关。
问题: 用户无需添加任何信息即可返回。该开关将被禁用,但 ExpansionTile 将处于活动状态,因为我们已经点击了它:
如何也检查这个?我们可以ExpansionTile
以某种方式禁用或强制点击吗?
此选项不是解决方案:
IgnorePointer(
ignoring: true,
child: ExpansionTile()
)
解决方案
推荐阅读
- huawei-mobile-services - 如何找到华为广告发布控制台?
- windows - 在 dockerfile 中,如何从 docker 映像中删除目录及其内容?(视窗)
- docker - 如何优化 docker 镜像?
- android - 使用 Flowable (RxJava) 时如何避免不必要的 RecyclerView 重新渲染?
- reactjs - 单击时样式反应组件
- reactjs - 在选择标签中添加默认值选项
- sql - 如何将被划分为其他变量的行作为一个整体进行计数?
- asp.net-mvc - 动作参数可以是 ASP.NET WEB API 中的模型吗?
- ios - 隐藏内部视图并快速自动调整单元格的高度
- reactjs - 使用 reactjs 中的浏览器图像压缩库更改文件格式?